Ren*_*ani 69 java collections performance
什么是Java中最快的集合?
我只需要添加和删除操作,顺序并不重要,等于元素不是问题,只不过添加和删除是非常重要的.
没有限制大小也很重要.
这些集合中将包含对象.
目前我正在使用ArrayDeque,因为我发现这是更快的Queue实现.
Col*_*inD 86
ArrayDeque是最好的.请参阅此基准,该博客文章来自此基准测试的结果.ArrayDeque没有节点分配的开销,也不会有LinkedList移除数组内容的开销ArrayList.在基准测试中,它执行大约3倍以及LinkedList大型队列,甚至比ArrayList空队列略好.为了获得最佳性能,您可能希望为其提供足够大的初始容量,以容纳一次可能容纳的元素数量,以避免许多调整大小.
之间ArrayList和LinkedList,似乎这取决于平均总要素队列将包含在任何给定的时间,并且LinkedList击败ArrayList起价约为10元.
你可以使用java.util.LinkedList- 它是双重链接和cicrular,所以添加到一端并取另一端是O(1)
无论您选择哪种实现,请通过Queue界面引用它,以便在结果不符合您的情况时轻松更改它(当然,如果首先是队列,则需要排队)
更新:科林的回答显示了一个基准,结论ArrayDeque是更好.两者都有O(1)操作,但LinkedList创建新对象(节点),略有性能.由于两者都有O(1)我不认为选择它会是错误的LinkedList.
| 归档时间: |
|
| 查看次数: |
50792 次 |
| 最近记录: |