利用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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· 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