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

2022-08-31 12:04:09

Java中最快的集合是什么?

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

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

这些集合将有对象在他里面。

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


答案 1

ArrayDeque是最好的。请参阅此基准测试,该基准测试来自此博客文章,内容涉及对此进行基准测试的结果。 没有节点分配的开销,也没有移动留在删除时的数组内容的开销。在基准测试中,它的性能大约是大型队列的3倍,甚至比空队列略好。为了获得最佳性能,您可能希望为其提供足够大的初始容量,以容纳一次可能容纳的元素数,以避免多次调整大小。ArrayDequeLinkedListArrayListLinkedListArrayList

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


答案 2

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

无论您选择哪种实现,都可以通过接口引用它,以便在结果不适合您的情况时可以轻松更改它(当然,如果队列是您首先需要的)Queue

更新:科林的答案显示了一个基准,得出的结论是更好。两者都有 O(1) 操作,但会创建新的对象(节点),这会稍微影响性能。由于两者都有O(1),我认为选择不会太错误。ArrayDequeLinkedListLinkedList


推荐