Java 如何对HashMap进行排序<;字符串,整数[]>;?
我有一个带有字符串和整数数组的HashMap,我想按数组的第一个值对映射进行排序 例如,在条目中:Java 如何对HashMap进行排序<;字符串,整数[]>;?,java,sorting,hashmap,Java,Sorting,Hashmap,我有一个带有字符串和整数数组的HashMap,我想按数组的第一个值对映射进行排序 例如,在条目中: {"Name1"=[2,4], "Name2"=[1,5], "Name3"=[3]} 命令应为: {"Name2"=[1,5], "Name1"=[2,4], "Name3"=[3]} 我想按数组的第一个值对映射进行排序 我们可以在从Map.entrySet()提取的流中使用自定义比较器,该比较器在进行比较时,会根据Map的值考虑数组的第一个元素 Map<String, In
{"Name1"=[2,4],
"Name2"=[1,5],
"Name3"=[3]}
命令应为:
{"Name2"=[1,5],
"Name1"=[2,4],
"Name3"=[3]}
我想按数组的第一个值对映射进行排序
我们可以在从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] }