ArrayDeque 实现为数组,为什么不是Random Access?

Tay*_*ous 6 java arrays list deque arraydeque

我知道ArrayDeque在添加和删除简单列表时速度很快。我实际测试过,它的添加和删除比LinkedList更快。因为我知道它是作为数组实现的,那为什么不随机访问呢?

我在 Java src 中读取了 ArrayDeque.java 文件。但以我的英语能力我不太明白。我看过很多来自 Google 和 Stack Overflow 的文章,但没有得到我想要的答案。

总之,我想要的答案是:

1. 为什么 ArrayDeque 不是 Random Access?(我最好奇) 2. ArrayDeque 在什么情况下使用?3. ArrayDeque 是不是没有实现为Array?(是不是知道错了知识?)

非常感谢您的回复!

Mat*_*ans 10

答案是没有充分的理由。很容易添加一个常数时间get(int)set(int,E)ArrayDeque. 我不止一次不得不ArrayDeque在 an 内部实现算法ArrayList来弥补这一不足。


Tar*_*mar 4

正如这里提到的,ArrayDeque 是 Deque 接口的可调整大小的数组实现。下划线数据结构是数组。但是,它不支持随机访问,因为它公开了双端队列接口。如果要访问Deque的随机元素,可以调用toArray(),然后通过索引访问元素。