利用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 }
利用Comparator对枚举类型进行排序的实现的更多相关文章
- Java之——利用Comparator接口对多个排序条件进行处理
转载自:http://blog.csdn.net/l1028386804/article/details/56513205 膜拜大神··· 一.需求 假设现在有个如此的需求:需要对一个这样的雇员列表进 ...
- 我的Java开发学习之旅------>Java利用Comparator接口对多个排序条件进行处理
一需求 二实现Comparator接口 三验证排序结果 验证第一条件首先按级别排序级别最高的排在前面 验证第二条如果级别相等那么按工资排序工资高的排在前面 验证第三条如果工资相当则按入职年数排序入职时 ...
- ComparatorChain、BeanComparator用法示例(枚举类型排序转)
工作中遇到按照类的某个属性排列,这个属性是个枚举类型,按照要求的优先级排列. 可以使用ComparatorChain.BeanComparator.FixedOrderComparator实现. 举一 ...
- [CLR via C#]15. 枚举类型和位标志
一.枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对. 例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal en ...
- 重温CLR(十一) 枚举类型、位标志和数组
枚举类型 枚举类型(enumerated types)定义了一组"符号名称/值"配对.例如,以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum ...
- Java开发笔记(五十六)利用枚举类型实现高级常量
前面介绍了联合利用final和static可实现常量的定义,该方式用于简单的常量倒还凑合,要是用于复杂的.安全性高的常量,那就力不从心了.例如以下几种情况,final结合static的方式便缺乏应对之 ...
- 5月11日 ArrayList集合复习、特殊集合、枚举类型
一.ArrayList集合复习 //定义 ArrayList al = new ArrayList(); //添加元素 al.Add(); //插入元素 al.Insert(,); //查看个数 in ...
- C# 获取与解析枚举类型的 DescriptionAttribute
原文:C# 获取与解析枚举类型的 DescriptionAttribute System.ComponentModel.DescriptionAttribute 这个 Attribute,经常被用来为 ...
- golang枚举类型 - iota用法拾遗
在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...
- TypeScript中的枚举类型
TypeScript拓展了Javascript原生的标准数据类型集,增加了枚举类型(enmu)和其他语言一 样 它提供我们一种数字类型的值,用来设置由于辨别的名字和方法 enum Students { ...
随机推荐
- sql server某列根据逗号转多行,其它字段不变
效果: 语句代码: declare @moulds varchar(4000); set @moulds='55-480730-03,55-487780-01,,55-487780-02 '; dec ...
- 2022-05-12内部群每日三题-清辉PMP
1.项目团队成员将因积极工作和满足项目成本目标而获得奖励.高级经理向项目经理询问团队成员的可用性和旅行偏好,项目经理可以在哪里获得奖励的定义标准和频率? A.责任分配矩阵(RAM) B.项目管理计划 ...
- chrome 检查更新时出错:无法启动更新检查(错误代码为 4: 0xA0430817 -- system level)
Windows系统谷歌浏览器 Chrome 检查更新时出错:无法启动更新检查(错误代码为 4: 0x80070005 -- system level)该怎么办? 这很有可能是 Chrome 更新服务被 ...
- PHP_冒泡排序代码解析
<?php /** * 基本思想:将数组中的每一个下标元素遍历出来 *依次将这些下标的值对后面一个下标的值对比 *如果大于后面一位下标的值,将两者调换位置 */ $arr = array (55 ...
- js数组去重,删除重复的属性值
let a=[] let hash={} a=a.reduce((pre,next)=>{ hash[next.name]?"":(hash[next.name]=true& ...
- Selenium私房菜系列9 -- Selenium RC服务器命令行参数列表【VV】
使用示例: java -jar selenium-server.jar [-interactive] [options] -port <nnnn>: selenium服务器使用的端口号(默 ...
- VS2010查看DLL导出函数的方法
在window下查看动态库的导出函数可以用vs自带的Dependenc工具:对于VC6.0,VC所带的Depends软件,在VC6安装目录下的tools文件夹里面,可以直接运行. VS2010中没有了 ...
- D - Pair of Topics
D - Pair of Topics 思路: 这个题需要一点思路,ai+aj>bi+bj可以转换成ai-bi+aj-bj>0,也就是c[i]=a[i]-b[i],只需要找c[i]+c[j] ...
- 解决 VSCode git commit 时 No such file or directory 报错问题
在git 进行 commit 时出现了 Git: .git/hooks/pre-commit: line 2: ./node_modules/pre-commit/hook: No such file ...
- (原创)odoo14下qweb模板的前端与后端语法区别
1.后端(qweb打包) 后端使用t-inherit 指定继承的模板,使用t-inherit-mode 指定继承的模式,使用xpath定位标记,使用position指定扩展位置. 2.前端 前端仍旧使 ...