java priorityqueue是怎樣的呢?下面就讓我們一起來了解一下吧:
java中的priorityqueue一般也就是代表優(yōu)先隊列。
這是屬于Queue接口的實現(xiàn),能夠?qū)ζ渲性剡M行排序,還能放基本數(shù)據(jù)類型的包裝類或是自定義的類,而對于基本數(shù)據(jù)類型的包裝類,優(yōu)先隊列中元素一般是默認排列順序為升序排列的。
參考范例:
隊列保存的是基本數(shù)據(jù)類型的包裝類,具體代碼為:
//自定義比較器,降序排列
static Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer e1, Integer e2) {
return e2 - e1;
}
};
public static void main(String[] args) {
//不用比較器,默認升序排列
Queue<Integer> q = new PriorityQueue<>();
q.add(3);
q.add(2);
q.add(4);
while(!q.isEmpty())
{
System.out.print(q.poll()+" ");
}
/**
* 輸出結(jié)果
* 2 3 4
*/
//使用自定義比較器,降序排列
Queue<Integer> qq = new PriorityQueue<>(cmp);
qq.add(3);
qq.add(2);
qq.add(4);
while(!qq.isEmpty())
{
System.out.print(qq.poll()+" ");
}
/**
* 輸出結(jié)果
* 4 3 2
*/
}
隊列保存的是自定義類,具體代碼為:
//矩形類
class Node{
public Node(int chang,int kuan)
{
this.chang=chang;
this.kuan=kuan;
}
int chang;
int kuan;
}
public class Test {
//自定義比較類,先比較長,長升序排列,若長相等再比較寬,寬降序
static Comparator<Node> cNode=new Comparator<Node>() {
public int compare(Node o1, Node o2) {
if(o1.chang!=o2.chang)
return o1.chang-o2.chang;
else
return o2.kuan-o1.kuan;
}
};
public static void main(String[] args) {
Queue<Node> q=new PriorityQueue<>(cNode);
Node n1=new Node(1, 2);
Node n2=new Node(2, 5);
Node n3=new Node(2, 3);
Node n4=new Node(1, 2);
q.add(n1);
q.add(n2);
q.add(n3);
Node n;
while(!q.isEmpty())
{
n=q.poll();
System.out.println("長: "+n.chang+" 寬:" +n.kuan);
}
/**
* 輸出結(jié)果
* 長: 1 寬:2
* 長: 2 寬:5
* 長: 2 寬:3
*/
}
}
以上就是小編的分享了,希望能夠幫助到大家。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com