Java的优先队列是一种堆Heap结构。
[-3,0,9,6]反映的是堆的存储顺序,而非排序的顺序
-3
0 9
6
堆是有序的,所以不用排序,当你把其作为队列,依次弹出时,才具有顺序
PriorityQueue
pq.offer(6);
pq.offer(-3);
pq.offer(9);
pq.offer(0);
System.out.println(pq);
//前代码不变,以下是依次弹出的代码
Integer i;
while((i=pq.poll())!=null) System.out.print(i+" ");
=============
[-3, 0, 9, 6]
-3 0 6 9
手册上也写着,可以转换成数组在Arrays.sort排序 Arrays.sort(pq.toArray()).
但我觉得这样非常浪费优先队列已经有序的性能。所以不推荐。