map排序工具类

Integer firstKey = map.keySet().iterator().next();  //获取第一个key  
/** * flag = 1 正序 * flag = 0 倒序 * @param map * @param flag * @return */

public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue2(Map<K, V> map, int flag) { if(flag == 1) { return map.entrySet().stream().sorted((o1, o2) -> o1.getValue().compareTo(o2.getValue())).map(entry -> { Map<K, V> result = new LinkedHashMap<>(); result.put(entry.getKey(), entry.getValue()); return result; }).reduce((map1, map2) -> { map2.entrySet().forEach(entry -> map1.put(entry.getKey(), entry.getValue())); return map1; }).get(); } else { return map.entrySet().stream().sorted((o1, o2) -> o2.getValue().compareTo(o1.getValue())).map(entry -> { Map<K, V> result = new LinkedHashMap<>(); result.put(entry.getKey(), entry.getValue()); return result; }).reduce((map1, map2) -> { map2.entrySet().forEach(entry -> map1.put(entry.getKey(), entry.getValue())); return map1; }).get(); }

    /**
     * flag = 1 正序
     * flag = 0 倒序
     * @param map
     * @param flag
     * @return
     */
    public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map, int flag) {
        Map<K, V> sortMap = new LinkedHashMap<>();
        if(flag == 1) {
            map.entrySet().stream()
            .sorted((o1, o2) -> o1.getValue().compareTo(o2.getValue()))
            .forEach(entry -> sortMap.put(entry.getKey(), entry.getValue()));
        } else {
            map.entrySet().stream()
            .sorted((o1, o2) -> o2.getValue().compareTo(o1.getValue()))
            .forEach(entry -> sortMap.put(entry.getKey(), entry.getValue()));
        }
        return sortMap;
    }
posted @ 2021-12-24 18:09  悄悄地超越  阅读(31)  评论(0编辑  收藏  举报