将所有列表值合并到地图中

ypr*_*rol -3 java java-8 java-stream

我想将地图转换为:

Map<String, List<String>> 
Run Code Online (Sandbox Code Playgroud)

List<String> 
Run Code Online (Sandbox Code Playgroud)

结果列表是所有列表值的合并。

Tun*_*aki 5

你可以有

List<String> result = map.values().stream().flatMap(List::stream).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

这将检索映射的值,values()然后将每个列表平面映射到由其元素形成的Stream中,并将结果收集到列表中。

另一种选择是,不对每个列表进行平面映射,因此可能会提高性能,而是通过调用每个累加的结果直接收集Stream<List<String>>(由返回values().stream()addAll

List<String> result = map.values().stream().collect(ArrayList::new, List::addAll, List::addAll);
Run Code Online (Sandbox Code Playgroud)