java 优先级队列

来源:互联网 发布:互联网大数据时代论文 编辑:程序博客网 时间:2024/05/17 22:18
优先级队列,队列头部存放的是优先级最高的元素。package prioritydemo1;import java.util.Comparator;import java.util.PriorityQueue;import java.util.Queue;public class prioritylist {private String name;private int num;//定义属性(名字和优先级)public prioritylist(String name, int num) {this.name = name;this.num = num;}        //构造函数public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}@Overridepublic String toString() {return  getName() + "-" + getNum();} public static void main(String args[]) { Comparator<prioritylist> demo1 = new Comparator<prioritylist>() {public int compare(prioritylist o1, prioritylist o2) {// TODO Auto-generated method stubint num1 = o1.getNum();int num2 = o2.getNum();if(num1 > num2){return 1;}else if(num1 < num2) {return -1;}else return 0;}};//定义比较容器,compare函数中定义的是优先级顺序,num1>num2时返回正数,所以0的优先级比1大。小的数优先级高。Queue<prioritylist> demo2 = new PriorityQueue<prioritylist>(11,demo1);                //定义优先级队列(定义容量和比较容器)                prioritylist t1 = new prioritylist("t1",2);                  prioritylist t3 = new prioritylist("t3",3);                  prioritylist t2 = new prioritylist("t2",6);                  prioritylist t4 = new prioritylist("t4",0);                  demo2.add(t1);                  demo2.add(t3);                  demo2.add(t2);                  demo2.add(t4);                  System.out.println(demo2.poll().toString()); //输出队列头部元素。 }}

0 0