我想将地图转换为:
Map<String, List<String>>
到
List<String>
其中结果列表是所有List值的合并。
答案 0 :(得分:4)
你可以拥有
List<String> result = map.values().stream().flatMap(List::stream).collect(Collectors.toList());
这将使用values()
检索地图的值,然后将每个列表平面映射到由其元素组成的流中,并将结果收集到列表中。
另一个替代方案,即没有对每个列表进行平面映射,因此可能更高效,是通过在每个累积结果上调用Stream<List<String>>
来直接收集values().stream()
(由addAll
返回)。
List<String> result = map.values().stream().collect(ArrayList::new, List::addAll, List::addAll);
答案 1 :(得分:1)
在地图条目的flatMap
上使用Stream
:
List<String> list = map.entrySet()
.stream()
.flatMap(e->e.getValue().stream())
.collect(Collectors.toList());