gpt4 book ai didi

java - 你如何在 Java 中使用 stream() 将 Map> 转换为 Map>

转载 作者:行者123 更新时间:2023-12-01 13:38:35 25 4
gpt4 key购买 nike

我有一个 Map 对象 Map<t1, Set<t2>> ,我想进入集合并将集合中的 t2 转换为新 map 的键。原始键 t1 将是 map 的新值。
例如,给定一个包含两个条目的 map

{key1: [a, b, c], key2: [c, d]}

结果 map 将是
{a: [key1], b: [key1], c: [key1, key2], d: [key2]}

[ ] 表示上述示例中的 Set。

最佳答案

java 8:

map.entrySet()
.stream()
.flatMap(e -> e.getValue()
.stream()
.map(v -> new SimpleEntry<>(v, e.getKey())))
.collect(Collectors.groupingBy(Entry::getKey,
Collectors.mapping(Entry::getValue, Collectors.toSet())))

Guava :
Multimaps.asMap(map.entrySet()
.stream()
.collect(ImmutableSetMultimap.flatteningToImmutableSetMultimap(
Entry::getKey, e -> e.getValue().stream()))
.inverse())

StreamEx :
EntryStream.of(map)
.flatMapValues(Set::stream)
.invert()
.grouping(Collectors.toSet())

关于java - 你如何在 Java 中使用 stream() 将 Map<v1, Set<v2>> 转换为 Map<v2, Set<v1>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46480725/

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