【发布时间】:2020-02-26 22:48:10
【问题描述】:
我有一个 Map<String,Map<String,List<String>>> 类型的对象。我需要提取字符串列表。有人可以帮助我如何在 Java Streams 中做到这一点吗?
【问题讨论】:
标签: java java-8 hashmap java-stream
我有一个 Map<String,Map<String,List<String>>> 类型的对象。我需要提取字符串列表。有人可以帮助我如何在 Java Streams 中做到这一点吗?
【问题讨论】:
标签: java java-8 hashmap java-stream
您想使用flatMap。例如:
List<String> list = myMap.values().stream()
.map(Map::values)
.flatMap(Collection::stream)
.flatMap(Collection::stream)
.collect(Collectors.toList());
我建议您阅读文档,因为有不同的方法可以实现这一点,并具有不同的性能影响。还有像 Eclipse Collections 这样的库可以帮助您完成同样的任务。
这是关于如何展平列表列表的一个很好的答案,它解释了不同的权衡和方法:How can I turn a List of Lists into a List in Java 8?
【讨论】:
map在flatMap中使用lambda操作如-myMap.values().stream() .flatMap(innerMap -> innerMap.values() .stream().flatMap(Collection::stream)) .collect(Collectors.toList());