Вы можете 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
имеет Конструктор с тремя аргументами.
РЕДАКТИРОВАТЬ: Как прокомментировал Антон, вы можете пропустить шаг 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()))));