gpt4 book ai didi

java - 映射几个流

转载 作者:行者123 更新时间:2023-12-01 11:55:33 24 4
gpt4 key购买 nike

我有几个具有相同 key 的 map name和不同的值类型。

Map<String, Long> map1 = ...
Map<String, Long> map2 = ...
Map<String, String> map3 = ...

我想要实现的是,从这三个不同的 map 中,组成一个新的 map :
Map<String, Foo> fooMap = ...

其中 Foo 是一个类:
class Foo {
long val1;
long val2;
String val3;
}

是否可以使用 Streams API 来做到这一点?

最佳答案

您可以 Stream在其中一个映射的条目上,并将每个条目映射到输出 Map 的一个条目:

Map<String,Foo>
outMap = map1.entrySet()
.stream()
.map(e -> new SimpleEntry<>(e.getKey(),
new Foo(e.getValue(),
map2.get(e.getKey()),
map3.get(e.getKey()))))
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));

这是假设您的 Foo类有一个 3 参数构造函数。

编辑:正如安东所评论的,您可以跳过 map步:
Map<String,Foo>
outMap = map1.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
e -> new Foo(e.getValue(),
map2.get(e.getKey()),
map3.get(e.getKey()))));

关于java - 映射几个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61477090/

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