優先級隊列是每次從隊列中取出的是具有最高優先權的元素。
PriorityQueue是從JDK1.5開始提供的新的數據結構接口。
如果不提供Comparator的話,優先隊列中元素默認按自然順序排列(升序),也就是數字默認是小的在隊列頭,字符串則按字典序排列。
如果想實現按照自己的意願進行優先級排列的隊列的話,需要實現Comparator接口。下面的方法,實現了根據某個變量,來進行優先級隊列的建立。
public static void main(String args[]){
Queue<Integer> que2 = new PriorityQueue<Integer>();
que2.add(11);
que2.add(2);
que2.add(14);
que2.add(5);
que2.add(7);
while(que2.size()>0){
System.out.print(" " + que2.poll()); //2 5 7 11 14
}
System.out.println();
//重寫compare後
que2=new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
});
System.out.println("重寫compare後-------");
que2.add(11);
que2.add(2);
que2.add(14);
que2.add(5);
que2.add(7);
while(que2.size()>0){
System.out.print(" " + que2.poll()); // 14 11 7 5 2
}
System.out.println();
}
————————————————
版權聲明:本文爲CSDN博主「hiphopmattshi」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hiphopmattshi/article/details/7334487