我有一个这样的地图列表: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]
临摹微笑
TA贡献1982条经验 获得超2个赞
此外,您可以在没有流的情况下进行(但使用 lambdas):
List<Integer> result = new ArrayList<>();
yourListOfMaps.forEach(map -> result.addAll(map.values());
地图列表的类型应为List<Map<String, Integer>>。
添加回答
举报
0/150
提交
取消