我有一个这样的地图列表:
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]
?
答案 0 :(得分:3)
尝试:
List<Integer> result = l
.stream()
.flatMap(map -> map.values().stream())
.collect(Collectors.toList());
System.out.println(result); // [1, 9, 23, 6]
答案 1 :(得分:2)
此外,您可以不使用流(但使用lambda)来做到这一点:
List<Integer> result = new ArrayList<>();
yourListOfMaps.forEach(map -> result.addAll(map.values());
地图列表应为List<Map<String, Integer>>
类型。