具有队列基本功能的最快 Java 集合是什么?
2022-08-31 12:04:09
Java中最快的集合是什么?
我只需要添加和删除的操作,顺序不重要,等于元素不是问题,无非是添加和删除是重要的。
没有限制的大小也很重要。
这些集合将有对象在他里面。
目前我正在使用ArrayDeque,因为我看到这是更快的队列实现。
Java中最快的集合是什么?
我只需要添加和删除的操作,顺序不重要,等于元素不是问题,无非是添加和删除是重要的。
没有限制的大小也很重要。
这些集合将有对象在他里面。
目前我正在使用ArrayDeque,因为我看到这是更快的队列实现。
ArrayDeque
是最好的。请参阅此基准测试,该基准测试来自此博客文章,内容涉及对此进行基准测试的结果。 没有节点分配的开销,也没有移动留在删除时的数组内容的开销。在基准测试中,它的性能大约是大型队列的3倍,甚至比空队列略好。为了获得最佳性能,您可能希望为其提供足够大的初始容量,以容纳一次可能容纳的元素数,以避免多次调整大小。ArrayDeque
LinkedList
ArrayList
LinkedList
ArrayList
在 和 之间,它似乎取决于队列在任何给定时间将包含的总元素的平均数量,并且从大约10个元素开始。ArrayList
LinkedList
LinkedList
ArrayList
你可以使用一个 - 它是双联和cicrular的,所以添加到一端并从另一端取的是O(1)java.util.LinkedList
无论您选择哪种实现,都可以通过接口引用它,以便在结果不适合您的情况时可以轻松更改它(当然,如果队列是您首先需要的)Queue
更新:科林的答案显示了一个基准,得出的结论是更好。两者都有 O(1) 操作,但会创建新的对象(节点),这会稍微影响性能。由于两者都有O(1),我认为选择不会太错误。ArrayDeque
LinkedList
LinkedList