我有一个java程序是这样的
公共(public)类 PriorityQueueExample {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
pq.add(10);
pq.add(1);
pq.add(9);
pq.add(2);
pq.add(8);
pq.add(3);
pq.add(7);
pq.add(4);
pq.add(6);
pq.add(5);
System.out.println(pq);
}
我的问题是为什么优先级队列不对它们进行排序。根据 java 规范,它实现了可比较并保持排序顺序(自然排序)
我的程序输出如下:[1, 2, 3, 4, 5, 9, 7, 10, 6, 8]
最佳答案
它是排序的,但在内部元素存储在堆中。如果您调用 peek()
、poll()
或 remove()
,您将获得正确的顺序(这就是您访问队列的方式).
关于Java : Priority Queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7927213/