PriorityQueue的使用

这是java类库中的一个,里面有很多方法,看帮助文档就知道,一下举出几个例子来更好的了解PriorityQueue的用法

例子一:

Code:
  1. import   java.util.*;    
  2.   
  3. @SuppressWarnings("rawtypes")   
  4. class Mouse implements Comparable {    
  5.     public   int   i;    
  6.     Mouse(int   i){    
  7.         this.i=i;    
  8.     }    
  9.     public String toString(){   
  10.         return   "Mouse   "+i;   
  11.     }    
  12.     public   int   compareTo(Object   o){    
  13.         assert   ((o!=null)&&(o   instanceof   Mouse));    
  14.         return   new   Integer(i).compareTo(((Mouse)o).i);    
  15.     }    
  16. }    
  17. public   class   TestQueue {    
  18.     public   static   void   main(String[]   args){    
  19.         Queue<Mouse> queue1=new PriorityQueue<Mouse>();    
  20.         PriorityQueue<Mouse> queue2 = new PriorityQueue<Mouse>(1new Comparator<Mouse>()// 大数在队列头   
  21.                 {   
  22.                     public int compare(Mouse o1, Mouse o2)   
  23.                     {   
  24.                         return o2.i- o1.i;   
  25.                     }   
  26.                 });   
  27.         for(int   i=5;i> -1;i--){   
  28.             queue1.add(new Mouse(i));    
  29.             queue2.add(new Mouse(i));   
  30.         }   
  31.         for(int i=5;i>-1;i--)    
  32.               System.out.println(queue1.poll());    
  33.         for(int i=5;i>-1;i--)    
  34.               System.out.println(queue2.poll());    
  35.     }    
  36. }   

例子二:

Code:
  1. import java.util.Comparator;   
  2. import java.util.PriorityQueue;   
  3.   
  4. enum ProductQuality {   
  5.   High, Medium, Low   
  6. }   
  7.   
  8. class Product implements Comparable<Product> {   
  9.   String name;   
  10.   
  11.   ProductQuality priority;   
  12.   
  13.   Product(String str, ProductQuality pri) {   
  14.     name = str;   
  15.     priority = pri;   
  16.   }   
  17.   
  18.   public int compareTo(Product msg2) {   
  19.     return priority.compareTo(msg2.priority);   
  20.   }   
  21. }   
  22.   
  23. class MessageComparator implements Comparator<Product> {   
  24.   public int compare(Product msg1, Product msg2) {   
  25.     return msg2.priority.compareTo(msg1.priority);   
  26.   }   
  27. }   
  28.   
  29. public class Main {   
  30.   public static void main(String args[]) {   
  31.   
  32.     PriorityQueue<Product> pq = new PriorityQueue<Product>(3);   
  33.   
  34.     pq.add(new Product("A", ProductQuality.Low));   
  35.     pq.add(new Product("B", ProductQuality.High));   
  36.     pq.add(new Product("C", ProductQuality.Medium));   
  37.     Product m;   
  38.     while ((m = pq.poll()) != null)   
  39.       System.out.println(m.name + " Priority: " + m.priority);   
  40.   
  41.     PriorityQueue<Product> pqRev = new PriorityQueue<Product>(3new MessageComparator());   
  42.   
  43.     pqRev.add(new Product("D", ProductQuality.Low));   
  44.     pqRev.add(new Product("E", ProductQuality.High));   
  45.     pqRev.add(new Product("F", ProductQuality.Medium));   
  46.   
  47.     while ((m = pqRev.poll()) != null)   
  48.       System.out.println(m.name + " Priority: " + m.priority);   
  49.   }   
  50. }    

主要是要重写compareTo()这个方法,使之达到自己想要的排序方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值