map是一种开发过程中经常使用的k-v数据结构,有个map保存了书名和书字数的关系,编写代码对map里面的书按照字数进行升序排序
第1行为map项的个数第2到N行为k-v,以逗号分隔,值大小为int类型(不小于0)
输出map按照值升序排序后的结果
4 a2,100 a1,100 b,300 c,200
a2,100 a1,100 c,200 b,300
如果值相同的话需要按照输入顺序输出
public static Map<String, Integer> sortMap(Map<String, Integer> map) { TreeMap<Integer, List<String>> treeMap = new TreeMap<>(); map.entrySet().forEach(entry -> { List<String> indexList = treeMap.computeIfAbsent(entry.getValue(), k -> new ArrayList<>()); indexList.add(entry.getKey()); }); Map<String, Integer> result = new ListOrderedMap(); treeMap.entrySet().forEach(entry -> { entry.getValue().forEach(key -> result.put(key, map.get(key))); }); return result; } public static Map<String, Integer> sortMap2(Map<String, Integer> map) { Map result = new ListOrderedMap(); map.entrySet().stream(). sorted(Map.Entry.comparingByValue()). forEachOrdered(entry -> result.put(entry.getKey(), entry.getValue())); return result; }