0%

Java集合类-ArrayDeque

ArrayDeque特点

基于数组的双端队列。

分别用两个索引指针指示头尾元素位置,循环访问数组元素,访问头尾元素时间复杂度为O(1)

容量不够时扩容,容量增加一倍。

也可以当栈使用。

有了LinkedList实现双端队列,为什么还要用ArrayDeque?

数组在内存中是连续存储的,CPU访问内存数据具有空间局部性特点,数组对CPU缓存很友好,可以大大提升访问速度。

链表每个节点存储位置是分散不连续的,CPU缓存命中率低,CPU访问主存次数增加,速度慢。

所以需要栈和队列时,优先选择用ArrayDeque。

ArrayDeque缺点

  1. ArrayDeque较于链表的方式的缺点就是容量不够时需要扩容,耗费O(n)的时间
  2. 删除元素后不会缩容,所以不适合数据量变化大且长期处于少数据状态的情况,会浪费空间

参考