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 cp=new Comparator(){
       public int compare(student s1, student s2){
           int num1=s1.grade;
           int num2=s2.grade;
           if(num1 > num2)  
           {  
               return 1;  
           }  
           else if(num1 pQ=new PriorityQueue(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 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 it2=pQ.iterator();
   while(it2.hasNext()){
        System.out.print(it2.next().name+" ");
       }

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

}
}

你可能感兴趣的:(数据结构)