Java Map 排序

263 阅读1分钟

初始map:

Map<String, Integer> map = new HashMap<>(8);
map.put("c", 9);
map.put("a", 8);
map.put("d", 10);
map.put("z", 2);

1. 按照value正序:

Map<String, Integer> collect = map.entrySet()        
                                  .stream()        
                                  .sorted(Map.Entry.comparingByValue())        
                                  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, BinaryOperator.maxBy(Integer::compareTo), LinkedHashMap::new));

2. 按照value倒序:

Map<String, Integer> collect = map.entrySet()        
                                  .stream()        
                                  .sorted((x, y) -> y.getValue().compareTo(x.getValue()))        
                                  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, BinaryOperator.maxBy(Integer::compareTo), LinkedHashMap::new));

3.按照key正序:

Map<String, Integer> collect = map.entrySet()        
                                  .stream()        
                                  .sorted(Map.Entry.comparingByKey())        
                                  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, BinaryOperator.maxBy(Integer::compareTo), LinkedHashMap::new));

4.按照key倒序:

Map<String, Integer> collect = map.entrySet()
                                  .stream()
                                  .sorted((x, y) -> y.getKey().compareTo(x.getKey()))        
                                  .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, BinaryOperator.maxBy(Integer::compareTo), LinkedHashMap::new));