将所有列表值合并在一个地图中

我想将地图转换为:

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());