import java.util.*;
public class TestPriorityQueue{
public static void main(String[] args){
PriorityQueue pq = new PriorityQueue();
pq.offer(6);
pq.offer(-3);
pq.offer(9);
pq.offer(0);
System.out.println(pq);
}
}//为什么输出的是[-3,0,9,6]而不是[-3,0,6,9]?
Java PriorityQueue如何排序?
答案:1 悬赏:50
解决时间 2021-03-11 18:43
- 提问者网友:孤笛钟情你
- 2021-03-11 15:45
最佳答案
- 二级知识专家网友:统治我的世界
- 2021-03-11 16:26
Java的优先队列是一种堆Heap结构。
[-3,0,9,6]反映的是堆的存储顺序,而非排序的顺序
-3
0 9
6
堆是有序的,所以不用排序,当你把其作为队列,依次弹出时,才具有顺序
PriorityQueue pq = new 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()).
但我觉得这样非常浪费优先队列已经有序的性能。所以不推荐。
[-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()).
但我觉得这样非常浪费优先队列已经有序的性能。所以不推荐。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯