【问题标题】:Extract List from nested Maps using Java Streams [duplicate]使用Java Streams从嵌套地图中提取列表[重复]
【发布时间】:2020-02-26 22:48:10
【问题描述】:

我有一个 Map<String,Map<String,List<String>>> 类型的对象。我需要提取字符串列表。有人可以帮助我如何在 Java Streams 中做到这一点吗?

【问题讨论】:

    标签: java java-8 hashmap java-stream


    【解决方案1】:

    您想使用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?

    【讨论】:

    • 或者避免mapflatMap中使用lambda操作如-myMap.values().stream() .flatMap(innerMap -&gt; innerMap.values() .stream().flatMap(Collection::stream)) .collect(Collectors.toList());
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2019-01-19
    • 2018-06-10
    • 1970-01-01
    相关资源
    最近更新 更多