【发布时间】:2015-10-01 05:46:37
【问题描述】:
文档说:
Deque 接口的 Resizable-array 实现。数组双端队列 没有容量限制;它们会根据需要增长以支持使用
但是我仍然想了解 ArrayDeque 的结构到底是什么,调整大小是如何工作的。如果有人能提供一个可靠的来源,我可以找到答案,那就太好了。根据我发现的一些谷歌结果,它可能实现为一个循环数组。这是真的吗?什么是增长政策?它类似于 ArrayList 吗?如果是,ArrayDeque在最后添加或删除元素等操作上是否有与ArrayList相似的性能?
谢谢。
【问题讨论】:
-
阅读源码?
-
@chrylis 是的,我现在正在这样做。在我看来,它是一个圆形数组。并且在满时大小翻倍,这使得增长策略与 ArrayList 非常相似。我不明白为什么很多人说 ArrayDeque 比 ArrayList 快。
-
谁说它更快?它们是不同类型的数据结构,而不是替代实现。
-
为了在开始添加元素,ArrayDeque 会更快,因为如果它不需要调整大小,它只会减少头部计数器(可能会环绕)。 ArrayList 会将所有元素复制到 n+1。但适合在最后添加,它们应该非常相似。
标签: java arraylist arraydeque