gpt4 book ai didi

java - 收集 Map 到 Map> 的流

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:06 26 4
gpt4 key购买 nike

我有一个 Stream< Map< K, V > >我正在尝试将这些 map 合并在一起,但在列表中保留重复值,因此最终类型将是 Map< K, List<V> > .有没有办法做到这一点?我知道 toMap收集器有一个二元函数来基本上选择返回哪个值,但它能跟踪转换后的列表吗?

如果aStream< Map< String, Int > >

a.flatMap(map -> map.entrySet().stream()).collect(
Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (val1, val2) -> ??
);

最佳答案

使用groupingBy : 请参阅 javadoc,但在您的情况下应该是这样的:

a.flatMap(map -> map.entrySet().stream())
.collect(
Collectors.groupingBy(
Map.Entry::getKey,
HashMap::new,
Collectors.mapping(Map.Entry::getValue, toList())
)
);

或者:

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

关于java - 收集 Map<K,V> 到 Map<K,List<V>> 的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com