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

ArrayDeque is implemented as an array, why is it not Random Access?

我知道 ArrayDeque 在添加和删除简单列表时速度很快。 我测试了一下,增删改查比LinkedList快。 因为我知道它是作为一个数组来实现的,那为什么不用Random Access呢?

我在 Java src 中读取了 ArrayDeque.java 文件。但是以我的英语水平,我不太理解。我看了很多Google和Stack Overflow的文章,但没有得到我想要的答案。

总之,我要找的是:

  1. 为什么ArrayDeque不是Random Access?(我最好奇)
  2. ArrayDeque在什么情况下使用?
  3. ArrayDeque 不是作为数组实现的吗? (我是不是理解错了?)

非常感谢您的回复!

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

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