//HashMap是无序的,当我们希望有顺序地去存储key-value时,就需要使用LinkedHashMap了,排序后可以再转成HashMap。
//LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。
//LinkedHashMap是线程不安全的。
Map<String,String> map = new HashMap<>();
map.put("a","123"); map.put("b","456"); map.put("z","789"); map.put("c","234");
//map根据value正序排序
LinkedHashMap<String, String> linkedMap1 = new LinkedHashMap<>();
map.entrySet().stream().sorted(Comparator.comparing(e -> e.getValue())).forEach(x -> linkedMap1.put(x.getKey(), x.getValue()));
结果:{a=123, c=234, b=456, z=789}
//map根据value倒序排序
LinkedHashMap<String, String> linkedMap2 = new LinkedHashMap<>(); map.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue())).forEach(x -> linkedMap2.put(x.getKey(), x.getValue()));
结果:{z=789, b=456, c=234, a=123}
//map根据key正序排序
LinkedHashMap<String, String> linkedMap3 = new LinkedHashMap<>();
map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey())).forEach(x -> linkedMap3.put(x.getKey(), x.getValue()));
结果:{a=123, b=456, c=234, z=789}
//map根据key倒序排序
LinkedHashMap<String, String> linkedMap4 = new LinkedHashMap<>(); map.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByKey())).forEach(x -> linkedMap4.put(x.getKey(), x.getValue()));
结果:{z=789, c=234, b=456, a=123}