zoukankan      html  css  js  c++  java
  • Map 排序

    Map 排序

    HashMap、Hashtable、LinkedHashMap排序

    注:TreeMap也可以使用此方法进行排序,但是更推荐下面的方法。

    Map<String, String> map = new HashMap<String, String>();
    map.put("b", "b");
    map.put("a", "c");
    map.put("c", "a");
    
    // 通过ArrayList构造函数把map.entrySet()转换成list
    List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
    // 通过比较器实现比较排序
    Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
        @Override
        public int compare(Map.Entry<String, String> mapping1, Map.Entry<String, String> mapping2) {
            return mapping1.getKey().compareTo(mapping2.getKey());
        }
    });
    
    for (Map.Entry<String, String> mapping : list) {
        System.out.println(mapping.getKey() + " :" + mapping.getValue());
    }
    
     

    TreeMap排序

    TreeMap默认按key进行升序排序,如果想改变默认的顺序,可以使用比较器:

    Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {
            // 降序排序
            return o1.compareTo(o2);
        }
    });
    
    map.put("b", "b");
    map.put("a", "c");
    map.put("c", "a");
    for (String key : map.keySet()) {
        System.out.println(key + " :" + map.get(key));
    }
    

    按value排序(通用)

     
     
    Map<String, String> map = new TreeMap<String, String>();
    map.put("b", "b");
    map.put("a", "c");
    map.put("c", "a");
    
    // 通过ArrayList构造函数把map.entrySet()转换成list
    List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
    // 通过比较器实现比较排序
    Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
        @Override
        public int compare(Map.Entry<String, String> mapping1, Map.Entry<String, String> mapping2) {
            return mapping1.getValue().compareTo(mapping2.getValue());
        }
    });
    
    for (String key : map.keySet()) {
        System.out.println(key + " :" + map.get(key));
    }
    What do you want to be?
  • 相关阅读:
    BZOJ-4008: [HNOI2015]亚瑟王 (概率期望DP)
    BZOJ-4832: [Lydsy2017年4月月赛]抵制克苏恩 (概率期望DP)
    BZOJ-1415: [Noi2005]聪聪和可可 (期望DP)
    BZOJ2425 [HAOI2010]计数
    BZOJ2424 [HAOI2010]订货
    BZOJ2423 [HAOI2010]最长公共子序列
    BZOJ2299 [HAOI2011]向量
    BZOJ2298 [HAOI2011]problem a
    BZOJ1040 [ZJOI2008]骑士
    BZOJ一天提交(AC) 51纪念
  • 原文地址:https://www.cnblogs.com/CatsBlog/p/9213215.html
Copyright © 2011-2022 走看看