如何收集Stream <map <k,v>&gt;到地图<k,列表<v>&gt;用java 8?

时间:2018-04-04 23:31:38

标签: java dictionary lambda java-8

我有一个Map<String,Double>的流,我想收集到一个Map<String,List<Double>>。有没有人建议如何做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:3)

首先,您需要将地图流展平为地图条目流。然后,使用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())));

答案 1 :(得分: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())));