This question already has answers here:
Java - PriorityQueue vs sorted LinkedList
(11个答案)
2年前关闭。
我需要支持比读取更多的插入,并保持数据排序。哪个会更好地执行:
使用
或者
使用
每次都调用
(11个答案)
2年前关闭。
我需要支持比读取更多的插入,并保持数据排序。哪个会更好地执行:
使用
PriorityQueue
提供比较器或者
使用
ArrayList
并在每次插入后调用.sort()
吗?每次都调用
.sort()
感觉很不对劲,但我无法阐明原因。 最佳答案
优先级队列不会使您的数据保持排序。它仅允许您调用以获取其最小元素。如果对优先级队列中的所有元素都执行此操作,则最终将能够形成已排序元素的列表。但是话又说回来,您将有一个空的优先级队列。
因此,如果您需要在不改变数据结构的情况下随时随地读取内容,那么优先队列就不适合您。
您可能正在寻找的是使用TreeSet/TreeMap,它使您可以使数据保持排序,并且插入/删除操作相对便宜(大约O(lg n))。