具有Queue基本功能的最快的Java集合是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (78)

Java中最快的集合是什么?

我只需要添加和删除操作,顺序并不重要,等于元素不是问题,无非是添加和删除是重要的。

没有限制的大小也很重要。

这些集合将在他内部有对象。

目前我使用ArrayDeque,因为我看到这是更快的Queue实现。

提问于
用户回答回答于

ArrayDeque是最好的。看到这个基准,它来自这个博客文章关于基准测试的结果。ArrayDeque不具有节点分配LinkedList的开销,也不具有移动数组内容的开销,而是移除ArrayList已经移除的数组内容。在基准测试中,它执行大约3倍以及LinkedList大队列,甚至比ArrayList空队列稍好。为了获得最佳性能,您可能需要给它一个足够大的初始容量,以保存一次可能保留的元素数量,以避免调整大小。

ArrayList和之间LinkedList,似乎取决于队列在任何给定时间将包含的总元素的平均数量,并且从大约10个元素开始LinkedList跳动ArrayList

用户回答回答于

你可以使用一个java.util.LinkedList- 它是双连接的,并且是cicrular,所以增加一端和从另一端取O(1)

无论您选择哪种实施方式,都可以通过Queue界面进行参考,以便在结果不符合您的情况时轻松更改它(当然,如果队列是您首先需要的)

更新:Colin的答案显示了一个ArrayDeque更好的基准。两者都具有O(1)操作,但LinkedList会创建新的对象(节点),这些对象的性能稍差。既然两者都有O(1),我认为选择它LinkedList虽然不是太错误。

扫码关注云+社区

领取腾讯云代金券