7

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

我阅读了 Java src 中的 ArrayDeque.java 文件。但是我的英语水平不太好。我看过很多来自 Google 和 Stack Overflow 的文章,但我没有得到我想要的答案。

总之,我正在寻找的是:

  1. 为什么 ArrayDeque 不是随机访问?(我很好奇)
  2. 在什么情况下使用ArrayDeque?
  3. ArrayDeque 不是作为数组实现的吗?(我误会了吗?)

非常感谢您的回复!

4

2 回答 2

14

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

于 2019-01-24T02:29:47.253 回答
4

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

于 2019-01-24T00:52:45.693 回答