对集合使用Comparator

 1 import java.util.Comparator;
 2 import java.util.PriorityQueue;
 3 
 4 /**
 5  * 对集合使用Comparator,不改变对象的自然顺序
 6  * @author Administrator
 7  *
 8  */
 9 public class PriMsgQDemo {
10     public static void main(String[] args) {
11         Message m;
12         //自然顺序排列
13         PriorityQueue<Message> pq = new PriorityQueue<Message>(3);
14         
15         pq.add(new Message("Message at main office at 3pm", Message.PLevel.Low));
16         pq.add(new Message("Fire in warehouse!", Message.PLevel.High));
17         pq.add(new Message("Report due Tuesday", Message.PLevel.Medium));
18         
19         System.out.println("Message in natural-order priority: ");
20         while((m = pq.poll()) != null){
21             System.out.println(m.msg+"Priority: " + m.priority);
22         }
23         System.out.println();
24         //使用比较器
25         PriorityQueue<Message> pqRev = new PriorityQueue<Message>(3, new RevMsgComparer());
26         
27         pqRev.add(new Message("Message at main office at 3pm", Message.PLevel.Low));
28         pqRev.add(new Message("Fire in warehouse!", Message.PLevel.High));
29         pqRev.add(new Message("Report due Tuesday", Message.PLevel.Medium));
30         
31         System.out.println("Message in reverse-order priority: ");
32         while((m = pqRev.poll()) != null){
33             System.out.println(m.msg+"Priority: " + m.priority);
34         }
35     }
36 }
37 
38 class Message implements Comparable<Message>{
39 
40     String msg;
41     enum PLevel {
42         High, Medium, Low
43     }
44     
45     PLevel priority;
46     public Message(String str, PLevel pri) {
47         msg = str;
48         priority = pri;
49     }
50     
51     @Override
52     public int compareTo(Message o) {
53         return priority.compareTo(o.priority);
54     }
55     
56 }
57 
58 class RevMsgComparer implements Comparator<Message>{
59 
60     @Override
61     public int compare(Message o1, Message o2) {
62         return o2.priority.compareTo(o1.priority);
63     }
64     
65 }

 

posted @ 2014-05-14 09:03  soul390  阅读(167)  评论(0编辑  收藏  举报