利用Comparator对枚举类型进行排序的实现

1. 利用BeanComparator对List<Object>根据属性进行排序

复制代码
        String daXiaoOrder[] = {"很小","小","中","大","特大"};
        String tianDuOrder[] = {"不甜","甜","很甜"}
        ComparatorChain comparatorChain = new ComparatorChain();
        FixedOrderComparator fixedOrderComparator1 = new FixedOrderComparator(daXiaoOrder);
        FixedOrderComparator fixedOrderComparator2 = new FixedOrderComparator(tianDuOrder); 
         //daXiao 和 tianDu 是Apple类的成员变量   
        comparatorChain.addComparator(new BeanComparator("daXiao",fixedOrderComparator1)); 
        comparatorChain.addComparator(new BeanComparator("tianDu",fixedOrderComparator2));
        Collections.sort(appleList, comparatorChain);
复制代码

 

2. 利用Comparator对List<String>排序

  

复制代码
 1 public static final Map<String, Integer> CHANNEL_ORDER_MAP = new HashMap<String, Integer>() {
 2         private static final long serialVersionUID = -8011287503097413378L;
 3 
 4         {
 5             put("A", 0);
 6             put("B", 1);
 7             put("C", 2);
 8             put("D+", 3);
 9             put("E", 4);
10             put("F", 5);
11             put("G", 6);
12             put("H", 7);
13             put("I", 8);
14             put("J", 9);
15             put("K", 10);
16         }
17     };
18 
19     /**
20      * 对渠道类型编码排序
21      *
22      * @param list 排序列表
23      */
24     public static void sortChannel(List<String> list) {
25         // 进行排序操作
26         list.sort(new Comparator() {
27             @Override
28             public int compare(Object o1, Object o2) {
29                 // 处理不存在指定排序列表中的字符串
30                 if (CHANNEL_ORDER_MAP.get(o1) == null || CHANNEL_ORDER_MAP.get(o2) == null) {
31                     return 1;
32                 }
33                 return CHANNEL_ORDER_MAP.get(o1).compareTo(CHANNEL_ORDER_MAP.get(o2));
34             }
35         });
36     }
复制代码

 

posted @   屠城校尉杜  阅读(317)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示