ArrayDeque被实现为一个数组,为什么它不是随机访问?

时间:2019-01-24 00:40:29

标签: java arrays list deque arraydeque

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

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

最后,我想要的答案是:

1。为什么ArrayDeque不是随机访问?(我很好奇) 2.在什么情况下使用ArrayDeque? 3. ArrayDeque是否未实现为数组?(我知道错误的知识吗?)

非常感谢您的答复!

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

  1. 因为在最坏的情况下,您无法在恒定的时间内访问第i个位置的元素。
  2. 每当需要从两端添加和获取元素时。
  3. 是的,它由数组支持。

答案 2 :(得分:3)

答案是没有充分的理由。向get(int)添加恒定时间set(int,E)ArrayDeque很容易。我必须不止一次地在ArrayDeque内实现ArrayList的算法来弥补这种不足。