通过反射,获取linkedHashMap的最后一个键值对。对map按照值进行排序。

1:通过反射,获取linkedHashMap的最后一个键值对。

Map<Integer, Integer> map = new LinkedHashMap<>();            
Field tail = map.getClass().getDeclaredField("tail");
            tail.setAccessible(true);
            Map.Entry<Integer,Integer> entry=(Map.Entry<Integer, Integer>) tail.get(map);
            Integer key = entry.getKey();
            Integer value = entry.getValue();

 2: 对Map按照值进行进行排序

public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> map) {
        Map<K, V> result = new LinkedHashMap<>();
        Stream<Map.Entry<K, V>> st = map.entrySet().stream();

        st.sorted(Comparator.comparing(e -> e.getValue())).forEach(e -> result.put(e.getKey(), e.getValue()));

        return result;
    }

猜你喜欢

转载自www.cnblogs.com/liyafei/p/9620894.html
今日推荐