我有几个具有相同 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/