• JAVA中对List<map<String,Object>>根据map某个key值进行排序


    方法
    compareTo()
    比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
    返回整数,1,-1,0;返回1表示大于,返回-1表示小于,返回0表示相等。


    普通的Integer 类型key进行比较
    public class java_ListMapSort {
        public static void main(String[] args) {
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
            Map<String, Object> map1 = new HashMap<String, Object>();
            map1.put("name", "p");
            map1.put("cj", "5");
            Map<String, Object> map2 = new HashMap<String, Object>();
            map2.put("name", "h");
            map2.put("cj", "12");
            Map<String, Object> map3 = new HashMap<String, Object>();
            map3.put("name", "f");
            map3.put("cj", "31");
            list.add(map1);
            list.add(map3);
            list.add(map2);
            //排序前 
            for (Map<String, Object> map : list) {
                System.out.println(map.get("cj"));
            }
            Collections.sort(list, new Comparator<Map<String, Object>>() {
                public int compare(Map<String, Object> o1, Map<String, Object> o2) {
                    Integer name1 = Integer.valueOf(o1.get("cj").toString()) ;//name1是从你list里面拿出来的一个 
                    Integer name2 = Integer.valueOf(o2.get("cj").toString()) ; //name1是从你list里面拿出来的第二个name
                    return name1.compareTo(name2);
                }
            });
            //排序后 
            System.out.println("-------------------");
            for (Map<String, Object> map : list) {
                System.out.println(map.get("cj"));
            }
        }
    }

    中文字符比较:

    要实现汉字按首字母排序,主要是设置语言环境,如下语句设置语言环境:

    这里用到了Collator类,此类实现了Comparator接口,用他的getInstance就可以用指定的语言环境来构造一个Collator对象:

    然后用如下语句创建Comparator:

    [java] view plain copy
     
    1. Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);  


    要注意的是Comparator里面的泛型类型一定要是Object类型,因为Collator类实现的Comparator接口里面传入的对象是Object:

    完整的实现代码如下:

    [java] view plain copy
     
    1. import java.text.Collator;    
    2. import java.util.*;    
    3. import java.util.Comparator;    
    4. public class cpm {    
    5.     public static void main(String[] args) {    
    6.         // TODO Auto-generated method stub    
    7.         Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);    
    8.         String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"};    
    9.         List<String> list = Arrays.asList(newArray);  
    10.         Collections.sort(list, com);   
    11.         for(String i:list){    
    12.             System.out.print(i+"  ");    
    13.         }  
    14.     }    
    15. }  


    输出结果是:

    安庆  安阳  北方  北京  广州  南京  汕头  武汉  阳江  中山  

    实例2:

         List<Map<String,Object>> list = new ArrayList<>();
            List<GroupItemUser> groupItemUserLists = groupItemUserRepository.findAllByAgencyId(agencyId);
            Iterator<GroupItemUser> iterator = groupItemUserLists.iterator();
            for (; iterator.hasNext();) {
                GroupItemUser groupItemUser = (GroupItemUser) iterator.next();
                Long userId = groupItemUser.userId();
                SysUser sysUser = sysUserRepository.findOne(userId);
                String name = sysUser.name();
                Map<String, Object> map = new HashMap<>();
                map.put("id", userId);
                map.put("name", name);
                list.add(map);
            }
            
            //将List集合按照Map的name进行排序(a>b>c ...)
            if(CollectionUtils.isNotEmpty(list)){
                Collections.sort(list,new Comparator<Map<String,Object>>() {
                        @Override
                        public int compare(Map<String,Object> o1, Map<String,Object> o2) {
                            Collator instance = Collator.getInstance(Locale.CHINA);
                            return instance.compare(o1.get("name").toString(), o2.get("name").toString());
                        }
                }); 
            }
            
            return list;
  • 相关阅读:
    ssm框架搭建出现的异常:The import org.springframework cannot be resolved
    ssm框架中的乱码问题的解决
    json语法和使用
    AJAX概述和简单使用
    JavaScript给动态插入的元素添加事件绑定
    Vue常用开源项目汇总
    ERROR in Template execution failed: ReferenceError: htmlwebpackPlugin is not defined
    Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimizat
    vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin
    Error: Chunk.entrypoints: Use Chunks.groupsIterable and filter by instanceof Entrypoint instead
  • 原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/7768491.html
Copyright © 2020-2023  润新知