gpt4 book ai didi

java - getValue 返回列表的反向映射

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

我想转换一个 Map<String, List<Object>>所以它变成了Map<String, String> .如果它只是 Map<String, Object>在 Java8 中很容易;

stream().collect(k -> k.getValue().getMyKey(), Entry::getKey);

但这行不通,因为 getValue 返回一个列表 Map<List<Object>, String>在我的例子中。假设 Object 包含一个用于键的 getter 并且 Object不包含第一个映射中的键。

有什么想法吗?

最佳答案

流过对象列表并提取您需要的 key ,然后 map --> flatten --> toMap

source.entrySet()
.stream()
.flatMap(e -> e.getValue()
.stream()
.map(x -> new SimpleEntry<>(x.getMyKey(), e.getKey())))
.collect(toMap(SimpleEntry::getKey, SimpleEntry::getValue));

如果预期存在重复,请使用合并功能 getMyKey()值(value)观:

source.entrySet()
.stream()
.flatMap(e -> e.getValue()
.stream()
.map(x -> new SimpleEntry<>(x.getMyKey(), e.getKey())))
.collect(toMap(SimpleEntry::getKey, SimpleEntry::getValue, (l, r) -> l));

注意:上面使用源映射键作为结果映射的值,因为这似乎是您在帖子中说明的内容,但是如果您希望保留源映射的键作为结果映射的键,然后更改 new SimpleEntry<>(x.getMyKey(), e.getKey())new SimpleEntry<>(e.getKey(),x.getMyKey()) .

关于java - getValue 返回列表的反向映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53498793/

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