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; }