gpt4 book ai didi

java - 如何使用Java Streams获取嵌套映射的键的所有组合?

转载 作者:行者123 更新时间:2023-11-30 02:04:10 25 4
gpt4 key购买 nike

假设我有一个Map<Integer, Map<Class, String>>我怎样才能获得 Integer 的所有组合外部映射的键和所有映射的键是一个优雅(但可能很长)Java 流声明中外部映射的值?

我的方法:

Map<Integer, Map<Class, String>> map = new HashMap<>();
map.keySet().stream()
.map(intKey -> map.get(intKey).keySet().stream()
.map(classKey -> new SimpleEntry(intKey, classKey)))
.collect(Collectors.toList());

收集 java.util.stream.ReferencePipeline 的列表。与

map.keySet().stream()
.map(intKey -> map.get(intKey).keySet().stream()
.map(classKey -> new SimpleEntry(intKey, classKey))
.collect(Collectors.toList()))
.collect(Collectors.toList());

我很难理解已经收集的集合 SimpleEntry s。当然,这种方法可能是完全错误的。

我的问题是我根本找不到解决这个问题的方法。请注意,我并不是在寻找解决方法,因为我想拓宽我的理解。

最佳答案

你就快到了。您只需要一个 flatMap():

map.entrySet()
.stream()
.flatMap(e -> e.getValue()
.keySet()
.stream()
.map(c -> new SimpleEntry<>(e.getKey(), c)))
.collect(Collectors.toList())

只是为了好玩,这里是 StreamEx解决办法:

EntryStream.of(map)
.mapValues(Map::keySet)
.flatMapValues(Set::stream)
.toList()

关于java - 如何使用Java Streams获取嵌套映射的键的所有组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51850108/

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