为了账号安全,请及时绑定邮箱和手机立即绑定

如何对 HashMap<String, Integer[]> 进行排序?

如何对 HashMap<String, Integer[]> 进行排序?

慕码人8056858 2023-06-08 20:40:58
我有一个带有字符串和整数数组的 HashMap,我想按数组的第一个值对映射进行排序。例如,在条目中:{"Name1"=[2,4], "Name2"=[1,5], "Name3"=[3]}顺序应该是:{"Name2"=[1,5], "Name1"=[2,4], "Name3"=[3]}
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

我想按数组的第一个值对地图进行排序


我们可以在从 中提取的流中使用自定义比较器,在进行比较时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] }


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 53 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信