【发布时间】:2018-04-04 23:31:37
【问题描述】:
我有一个Map<String,Double> 流,我想将它收集到一个Map<String,List<Double>> 中。有人对如何做到这一点有建议吗?
谢谢!
【问题讨论】:
标签: java dictionary lambda java-8
我有一个Map<String,Double> 流,我想将它收集到一个Map<String,List<Double>> 中。有人对如何做到这一点有建议吗?
谢谢!
【问题讨论】:
标签: java dictionary lambda java-8
首先,您需要将地图流扁平化为地图条目流。然后,使用Collectors.groupingBy 和Collectors.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())));
【讨论】:
说我有:
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())));
【讨论】: