利用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 { ... 
随机推荐
- Linux(CentOS) Mysql 8.0.30 安装(多源安装)
			Linux(CentOS) Mysql 8.0.30 安装(多源安装) 安装命令根据实际部署情况修改调整,CentOS一般选择通用版本Red Hat Enterprise Linux 7 本文档使用w ... 
- etcdctl 安装与使用
			介绍 etcdctl是一个提供简洁命令的etcd客户端,使用etcdctl可以直接和etcd服务打交道,对etcd中的键值对进行增删改查. 安装etcdctl 下载etcdctl工具 下载地址:etc ... 
- 创建异步倒计时触发Task
			https://www.cnblogs.com/shanfeng1000/p/13402152.html //Task关闭 CancellationTokenSource cancel = new C ... 
- 解决Mac安装Homebrew失败
			首先使用Homebrew官网的安装shell命令安装: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebr ... 
- 如何使用命令行直接运行PHP脚本程序
			在我的博客里有一些文章是和解码或者处理文件有关,其中有些自动化工作比较简单,使用了一些PHP程序来编写处理,这样写起程序来也比较快,因为是纯过程的任务,不想用C#来处理. 写完PHP的脚本程序后,保存 ... 
- QT 使用QDomDocument::setContent()读XML文件总是返回false
			代码: if(!doc.setContent(&file)){读取失败操作}发现总是返回false: 使用如下代码调试: if(!doc.setContent(&file,&s ... 
- CCF 201912-1	报数
			#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ... 
- 对词向量模型Word2Vec和GloVe的理解
			Word2Vec Word2Vec 是 google 在2013年提出的词向量模型,通过 Word2Vec 可以用数值向量表示单词,且在向量空间中可以很好地衡量两个单词的相似性. 简述 我们知道,在使 ... 
- supervisor+gunicorn+uvicorn部署fastapi项目
			一.编写一个项目 本项目是在虚拟环境下的: 先启动虚拟环境:source .venv/bin/activate.(创建虚拟环境自己去找) 项目用于演示,所以非常简单, 在虚拟环境中安装需要的第三方库: ... 
- Java06 面向对象
			一 什么是面向对象 面向对象编程(Object-Oriented Programming,OOP) 面向对象编程的本质就是:以类的方式组织代码,以对象组织(封装)数据. 三大特性: 封装 继承 多态 ... 
