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()))));