List<Map> 自定义排序
来源:互联网 发布:淘宝网商城摩托车 编辑:程序博客网 时间:2024/05/22 17:39
对list根据自定义方法排序记要
如果排序对象是个实体类,实体类则直接实现Comparator接口,实现compare方法即可;实现Comparator接口时,可以使用泛型,如implements Comparator<User>;compare(User p1, User p2)
- List list = dao.findAllToMap();//得到所有数据,结果封装成List<Map>
- ComparatorArea comparator = new ComparatorArea();
- Collections.sort(list, comparator);
- /**
- * 对区块自定义排序,顺序从高到低如下:
- * 塔北
- * 库车
- * 塔中
- * 塔西
- * 塔河
- * 盛业
- * 新疆
- *
- */
- private class ComparatorAreaimplements Comparator{
- Map<String,Integer> sortValue = new HashMap<String,Integer>();
- public ComparatorArea(){
- initSort();
- }
- public int compare(Object p1, Object p2) {
- Object o1 = ((Map)p1).get("ITEM_AREA_NAME");
- Object o2 = ((Map)p2).get("ITEM_AREA_NAME");
- String key1 = o1 != null ? o1.toString() : "";
- String key2 = o2 != null ? o2.toString() : "";
- if(StringUtils.isEmpty(key1) && StringUtils.isEmpty(key2)){
- return 0;//都为null或空串,相等
- }else if(key1.equals(key2)){
- return 0;
- }else if(StringUtils.isEmpty(key1) && !StringUtils.isEmpty(key2)){
- return 1;//null或空串越向后靠
- }else if(!StringUtils.isEmpty(key1) && StringUtils.isEmpty(key2)){
- return -1;//null或空串越向后靠
- }else if(sortValue.get(key1) > sortValue.get(key2)){
- return 1;
- }else{
- return -1;
- }
- }
- //排序顺序,value越大,排序越靠前
- private void initSort(){
- sortValue.put("新疆", 7);
- sortValue.put("盛业", 6);
- sortValue.put("塔河", 5);
- sortValue.put("塔西", 4);
- sortValue.put("塔中", 3);
- sortValue.put("库车", 2);
- sortValue.put("塔北", 1);
- }
- }
List list = dao.findAllToMap();//得到所有数据,结果封装成List<Map>ComparatorArea comparator = new ComparatorArea();Collections.sort(list, comparator); /** * 对区块自定义排序,顺序从高到低如下: *塔北 * 库车 *塔中 *塔西 *塔河 *盛业 *新疆 * */ private class ComparatorArea implements Comparator{ Map<String,Integer> sortValue = new HashMap<String,Integer>(); public ComparatorArea(){ initSort(); }public int compare(Object p1, Object p2) {Object o1 = ((Map)p1).get("ITEM_AREA_NAME");Object o2 = ((Map)p2).get("ITEM_AREA_NAME");String key1 = o1 != null ? o1.toString() : "";String key2 = o2 != null ? o2.toString() : "";if(StringUtils.isEmpty(key1) && StringUtils.isEmpty(key2)){return 0;//都为null或空串,相等}else if(key1.equals(key2)){return 0;}else if(StringUtils.isEmpty(key1) && !StringUtils.isEmpty(key2)){return 1;//null或空串越向后靠}else if(!StringUtils.isEmpty(key1) && StringUtils.isEmpty(key2)){return -1;//null或空串越向后靠}else if(sortValue.get(key1) > sortValue.get(key2)){return 1;}else{return -1;}} //排序顺序,value越大,排序越靠前private void initSort(){sortValue.put("新疆", 7);sortValue.put("盛业", 6);sortValue.put("塔河", 5);sortValue.put("塔西", 4);sortValue.put("塔中", 3);sortValue.put("库车", 2);sortValue.put("塔北", 1);} }
如果排序对象是个实体类,实体类则直接实现Comparator接口,实现compare方法即可;实现Comparator接口时,可以使用泛型,如implements Comparator<User>;compare(User p1, User p2)
- List<Map> 自定义排序
- Map List排序
- List<Map> 排序
- List<Map> 排序
- collection,list,map 排序
- List<Map> 排序
- List <Map> 排序详解
- java list<map> 排序
- List<Map>排序
- List,map排序
- List、MAP排序
- List Map sort 排序
- Map&List排序
- Collections排序List<Map>
- List<Map<>>排序
- List<Map>排序
- 自定义map的排序
- c++ map自定义排序
- java路径问题以及java对文件的基本操作信息
- java 每天定时执行任务
- 开源 免费 java CMS - FreeCMS技术架构
- 简单的MVC就够了吗?浅谈service Layer的引入
- C++之Queue
- List<Map> 自定义排序
- xml内容解析,包含命名空间时需特殊处理(dom4j)
- DAO层,Service层,Controller层、View层
- java配置文件读取和项目路径的多种获取方式
- C++之Stack
- Java里如何实现多继承里
- java常见面试题(转)搜集汇总
- java 字符串split有很多坑,使用时请小心!!
- java.lang.IllegalStateException: Cannot forward after response has been committe