Java 映射少数流
我有几个地图具有相同的键Java 映射少数流,java,java-stream,Java,Java Stream,我有几个地图具有相同的键名称和不同的值类型 Map<String, Long> map1 = ... Map<String, Long> map2 = ... Map<String, String> map3 = ... 是否可以使用Streams API执行此操作?您可以对其中一个映射的条目进行流,并将每个条目映射到输出的一个条目映射: Map<String,Foo> outMap = map1.entrySet()
名称和不同的值类型
Map<String, Long> map1 = ...
Map<String, Long> map2 = ...
Map<String, String> map3 = ...
是否可以使用Streams API执行此操作?您可以对其中一个映射的条目进行流
,并将每个条目映射到输出的一个条目映射
:
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));
为什么要使用此中间临时SimpleEntry
?为什么不在收集器中创建Foo呢.collect(Collectors.toMap(Map.Entry::getKey,e->new-Foo(e.getValue(),map2.get(e.getKey()),map3.get(e.getKey()))
@antobalaniuc我只是没想过。你的方法当然有效。
class Foo {
long val1;
long val2;
String val3;
}
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));
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()))));