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