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

线性化地图值列表的最佳简洁方法?

线性化地图值列表的最佳简洁方法?

慕后森 2021-10-28 14:39:51
我有一个这样的地图列表:List<Map<String,Object>> l = new ArrayList<>();Map<String,Integer> m = new HashMap<>();m.put("X", 1);m.put("Y", 9);l.add(m);m = new HashMap<>();m.put("X", 23);m.put("Y", 6);l.add(m);使用 lambda 原语线性化所有映射值以获得这样的列表的最佳方法是什么List<Integer> = [1, 9, 23, 6]?
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

尝试:


List<Integer> result = l

        .stream()

        .flatMap(map -> map.values().stream())

        .collect(Collectors.toList());


System.out.println(result); // [1, 9, 23, 6]


查看完整回答
反对 回复 2021-10-28
?
临摹微笑

TA贡献1982条经验 获得超2个赞

此外,您可以在没有流的情况下进行(但使用 lambdas):


List<Integer> result = new ArrayList<>();

yourListOfMaps.forEach(map -> result.addAll(map.values());

地图列表的类型应为List<Map<String, Integer>>。


查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 129 浏览

添加回答

举报

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