【问题标题】:How to collect Stream<Map<K,V>> into Map<K,List<V>> using java 8?如何使用 java 8 将 Stream<Map<K,V>> 收集到 Map<K,List<V>> 中?
【发布时间】:2018-04-04 23:31:37
【问题描述】:

我有一个Map&lt;String,Double&gt; 流,我想将它收集到一个Map&lt;String,List&lt;Double&gt;&gt; 中。有人对如何做到这一点有建议吗?

谢谢!

【问题讨论】:

    标签: java dictionary lambda java-8


    【解决方案1】:

    首先,您需要将地图流扁平化为地图条目流。然后,使用Collectors.groupingByCollectors.mapping

    Map<String,List<Double>> result = streamOfMaps
        .flatMap(map -> map.entrySet().stream())
        .collect(Collectors.groupingBy(
            Map.Entry::getKey, 
            Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
    

    【讨论】:

      【解决方案2】:

      说我有:

      Stream<Map<String, Double>> mapStream
      

      那么答案是:

      mapStream.map(Map::entrySet)
               .flatMap(Collection::stream)
               .collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
      

      【讨论】:

        猜你喜欢
        • 2019-01-23
        • 2013-12-20
        • 1970-01-01
        • 2020-04-08
        • 2014-02-09
        • 1970-01-01
        • 1970-01-01
        • 2018-11-23
        • 2019-10-10
        相关资源
        最近更新 更多