猿问

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

我有一个这样的地图列表:


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]

?


慕后森
浏览 130回答 2
2回答

月关宝盒

尝试:List<Integer> result = l&nbsp; &nbsp; &nbsp; &nbsp; .stream()&nbsp; &nbsp; &nbsp; &nbsp; .flatMap(map -> map.values().stream())&nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toList());System.out.println(result); // [1, 9, 23, 6]

临摹微笑

此外,您可以在没有流的情况下进行(但使用 lambdas):List<Integer> result = new ArrayList<>();yourListOfMaps.forEach(map -> result.addAll(map.values());地图列表的类型应为List<Map<String, Integer>>。
随时随地看视频慕课网APP

相关分类

Java
我要回答