暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Map根据key值和value值排序

708

一. map 根据key值排序:

(1)根据key值升序: 建立TreeMap 直接排序

    TreeMap<String,Integer> p = new TreeMap<>(map);
    复制

    (2)根据key值降序:建立TreeMap,使用descendingMap实现降序

      TreeMap<String,Integer> p = new TreeMap<>(map);
      p.descendingMap();
      复制


      二. map 根据value值排序

      1、将Map的entrySet转换为List

      2、用Collections工具类的sort方法排序

      3、遍历排序好的list,将每组key,value放进LinkedHashMap(Map的实现类只有LinkedHashMap是根据插入顺序来存储)

      (1)根据value值升序

          public static <K, V extends Comparable<? super V>> Map<K, V> sortAscend(Map<K, V> map) {
        List<Map.Entry<K, V>> list = new ArrayList<Map.Entry<K, V>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
        @Override
        public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
        int compare = (o1.getValue()).compareTo(o2.getValue());
        return compare;
        }
        });


        Map<K, V> returnMap = new LinkedHashMap<K, V>();
        for (Map.Entry<K, V> entry : list) {
        returnMap.put(entry.getKey(), entry.getValue());
        }
        return returnMap;
        }
        复制

        (2)根据value值降序

           public static <K, V extends Comparable<? super V>> Map<K, V> sortDescend(Map<K, V> map) {
          List<Map.Entry<K, V>> list = new ArrayList<>(map.entrySet());
          Collections.sort(list, new Comparator<Map.Entry<K, V>>() {
          @Override
          public int compare(Map.Entry<K, V> o1, Map.Entry<K, V> o2) {
          int compare = (o1.getValue()).compareTo(o2.getValue());
          return -compare;
          }
          });


          Map<K, V> returnMap = new LinkedHashMap<K, V>();
          for (Map.Entry<K, V> entry : list) {
          returnMap.put(entry.getKey(), entry.getValue());
          }
          return returnMap;


          }
          复制


          文章转载自琢磨先生DataBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论