中易网

Java PriorityQueue如何排序?

答案:1  悬赏:50  
解决时间 2021-03-11 18:43
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的优先队列是一种堆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()).
但我觉得这样非常浪费优先队列已经有序的性能。所以不推荐。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
女朋友给我留言说,你的悲伤是否像大海一样深
20周岁才上大学是不是老了,年龄上会自卑么?
能不能用两节五号电池给手机充电
秦御宫浴场这个地址在什么地方,我要处理点事
进口奔驰有一款车尾部没有任何logo的,请问是
美甲化妆韩式半永久最有创意的广告语
点菜冰柜里面顶部为什么有许多水珠,买来四个
word ppt excel(office2007)怎么都不显示图
济南市大明湖小学幼儿园在什么地方啊,我要过
速锐1.5t手动豪华型加什么油好
激战2背部饰品
怎么打大鼓?
《螳螂捕蝉》的历史故事中,那个劝说吴王不要
增城区好的男科医院
android studio include c++ support什么用
推荐资讯
除权除息日卖出股票送股分红还能到账吗
想弄死一个人,怎样做天衣无缝?如果用刀刺哪
唐家浜地址有知道的么?有点事想过去
奔腾B50雨刷有异响是什么原因
想知道: 泰安市 从省庄到祝阳镇怎么坐公交
美菱x q g5o一11o8滚筒洗衣机水位传感器什么
梦幻西游普陀加点.
提前30天递交辞职报告,公司会于何时封存公积
地下城与勇士合天空是用普通装扮好还是高级装
网上兼职做调查 应该怎么做呢
在GBA叶绿宠物小精灵中怎么让梦幻听话?请告
枝子什么时候开花
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?