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

Java中最快的集合是什么?

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

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

这些集合将有他内的对象。

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

ArrayDeque是最好的。 看到这个基准 ,它来自这个博客文章关于这个基准的结果。 ArrayDeque没有LinkedList所做的节点分配的开销,也没有移除ArrayList具有的数组内容的开销。 在基准testing中,它对大队列执行大约3倍的 LinkedList ,对于空队列,它甚至比ArrayList稍好。 为了获得最佳性能,您可能希望给它一个足够大的初始容量,以保持一次可能保留的元素数量,以避免resize。

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

你可以使用一个java.util.LinkedList – 它是双链接的,并且是cicrular,所以添加到另一端,从另一端取O(1)

不pipe你select什么实现,都可以通过Queue接口来引用它,这样,如果事实certificate不适合你的情况,你可以轻易地改变它(当然,如果队列是你首先需要的)

更新:Colin的答案显示了一个基准,得出ArrayDeque更好的结论。 两者都有O(1)操作,但是LinkedList创build了新的对象(节点),性能稍微好一些。 既然都有O(1),我认为selectLinkedList虽然不是太错误。