【发布时间】:2015-07-11 11:40:56
【问题描述】:
我对这种行为有些怀疑。我假设 ArrayList 的性能将与 ArrayDeque 相同,同时实现堆栈,因为 ArrayDeque 将使用其 addLast() 方法进行插入并使用 removeLast() 方法进行删除。在这种情况下,两者的效率相同.如果我在某处错了,请纠正我。
【问题讨论】:
-
为什么不测试这种行为?
标签: java
我对这种行为有些怀疑。我假设 ArrayList 的性能将与 ArrayDeque 相同,同时实现堆栈,因为 ArrayDeque 将使用其 addLast() 方法进行插入并使用 removeLast() 方法进行删除。在这种情况下,两者的效率相同.如果我在某处错了,请纠正我。
【问题讨论】:
标签: java
当用作堆栈时,ArrayDeque 和ArrayList 的性能应该差不多。两个“推”都将摊销 O(1),尽管它们的初始容量可能会对性能产生轻微影响。
default capacity for ArrayList is 10,而initial capacity of ArrayDeque is 16。他们的内部增长政策导致小的绩效差异,这在实践中可能并不明显。您可以参考此post 了解更多信息。
毕竟,他们的“推”操作摊销 O(1)。
** 这个post 提到ArrayDeque 的javadoc 表明它可能会稍微快一些,但我还没有找到源代码。
【讨论】: