java, java中的Priorityqueue一般代表優(yōu)先級隊列。
這是Queue接口的實現(xiàn),可以對里面的元素進(jìn)行排序,也可以放基本數(shù)據(jù)類型的包裝類或者自定義類。對于基本數(shù)據(jù)類型的包裝類,默認(rèn)情況下,優(yōu)先級隊列中的元素通常按升序排列。
參考示例:
隊列存儲基本數(shù)據(jù)類型的包裝類,具體代碼為:
//自定義比較器,按降序排序
static ComparatorInteger cmp=new ComparatorInteger() {
public int compare(Integer e1, Integer e2) {
return e2 - e1;
}
};
public static void main(String[] args) {
//沒有比較器,默認(rèn)排列是升序。
QueueInteger q=new PriorityQueue();
q.add(3);
q.add(2);
q.add(4);
while(!q.isEmpty())
{
System.out.print(q.poll()+ );
}
/**
*輸出結(jié)果
* 2 3 4
*/
//使用自定義比較器按降序排序。
QueueInteger 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 ComparatorNode cNode=new ComparatorNode() {
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) {
QueueNode 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 .寬);
}
/**
*輸出結(jié)果
*長度:1寬度:2
*長:2寬:5
*長:2寬:3
*/
}
}
以上是邊肖的分享,希望對大家有所幫助。
java,以上就是本文為您收集整理的java最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。