当年话下
我想按数组的第一个值对地图进行排序我们可以在从 中提取的流中使用自定义比较器,在进行比较时Map.entrySet()考虑Map 值中数组的第一个元素: Map<String, Integer[]> map = new HashMap<>(); map.put("Name1", new Integer[]{2,5}); map.put("Name2", new Integer[]{1,4}); map.put("Name3", new Integer[]{3}); Map<String, Integer[]> sorted = map .entrySet().stream() .sorted(Comparator.comparing(ent -> ent.getValue()[0])) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b, LinkedHashMap::new)); sorted.forEach((k,v) -> System.out.println("{ " + k + " " + Arrays.toString(v) + " }"));输出:{ Name2 [1, 4] }{ Name1 [2, 5] }{ Name3 [3] }