Avi*_*ddy 7 java collections priority-queue
我有一个java程序,就像这样
公共类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);
}
Run Code Online (Sandbox Code Playgroud)
}
我的问题是为什么优先级队列不对它们进行排序.根据java规范,它实现了可比较并维护排序顺序(自然排序)
我的节目输出如下:[1,2,3,4,5,9,7,10,6,8]
插入优先级队列不足以对元素列表进行排序,因为它不按排序顺序存储它们; 它将它们存储在部分排序的堆顺序中.您必须删除循环中的元素才能对它们进行排序:
while (pq.size() > 0)
System.out.println(pq.remove());
Run Code Online (Sandbox Code Playgroud)