java标准库中优先队列的使用

//作者水平有限,难免有不足之处,望批评改正

/*
优先队列:普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。
在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。
*/

import java.util.Comparator;
import java.util.Iterator;
import java.util.PriorityQueue;

public class queue {
private static final boolean String = false;
public static void main(String[] args){

   //如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。
   //如果不知道什么事Comparator,笔者的另一篇文章有详细的解释以及与Comparable的比较
   //在这里我们提供一个比较器
   Comparator<student> cp=new Comparator<student>(){
       public int compare(student s1, student s2){
           int num1=s1.grade;
           int num2=s2.grade;
           if(num1 > num2)  
           {  
               return 1;  
           }  
           else if(num1<num2)  
           {  
               return -1;  
           }  
           else  
           {  
               return 0;  
           }  
       }
   };

   //创建优先队列,存放整数类型的数据,默认长度11,这是的长度为5,比较器为cp

   PriorityQueue<student> pQ=new PriorityQueue<student>(5,cp);
   //这俩种方式都可以添加向优先队列中添加元素
   student s1=new student("张三",100);
   student s2=new student("李四",98);
   student s3=new student("王五",99);
   student s4=new student("赵六",95);


   //这俩种添加方式的效果是一样的
   pQ.add(s1);
   pQ.offer(s2);
   pQ.add(s3);
   pQ.add(s4);

   //迭代器
   Iterator<student> it=pQ.iterator();

   System.out.println("优先队列中的个数:"+pQ.size());
   while(it.hasNext()){
        System.out.print(it.next().name+" ");
       }

   pQ.poll();//删除分数值最小的(可以理解为优先级最大的)的
   System.out.println("\n优先队列中的个数:"+pQ.size());
   Iterator<student> it2=pQ.iterator();
   while(it2.hasNext()){
        System.out.print(it2.next().name+" ");
       }

   pQ.poll();//删除分数值最小的(可以理解为优先级最大的)的
   System.out.println("\n优先队列中的个数:"+pQ.size());
   Iterator<student> it3=pQ.iterator();
   while(it3.hasNext()){
        System.out.print(it3.next().name+" ");
       }

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值