对集合使用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 }

 

转载于:https://www.cnblogs.com/wanghui390/p/3726956.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值