This question already has answers here:
Java - PriorityQueue vs sorted LinkedList

(11个答案)


2年前关闭。




我需要支持比读取更多的插入,并保持数据排序。哪个会更好地执行:

使用PriorityQueue提供比较器

或者

使用ArrayList并在每次插入后调用.sort()吗?

每次都调用.sort()感觉很不对劲,但我无法阐明原因。

最佳答案

优先级队列不会使您的数据保持排序。它仅允许您调用以获取其最小元素。如果对优先级队列中的所有元素都执行此操作,则最终将能够形成已排序元素的列表。但是话又说回来,您将有一个空的优先级队列。

因此,如果您需要在不改变数据结构的情况下随时随地读取内容,那么优先队列就不适合您。

您可能正在寻找的是使用TreeSet/TreeMap,它使您可以使数据保持排序,并且插入/删除操作相对便宜(大约O(lg n))。

10-01 20:21
查看更多