From ee7fa854b45148eb01fb9bc7adb9c633eb705873 Mon Sep 17 00:00:00 2001 From: mherbaghinyan Date: Fri, 28 Sep 2018 17:32:11 +0400 Subject: [PATCH] merge maps more examples --- .../com/baeldung/map/java_8/MergeMaps.java | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/core-java-collections/src/main/java/com/baeldung/map/java_8/MergeMaps.java b/core-java-collections/src/main/java/com/baeldung/map/java_8/MergeMaps.java index 2137bd9094..a5dada4152 100644 --- a/core-java-collections/src/main/java/com/baeldung/map/java_8/MergeMaps.java +++ b/core-java-collections/src/main/java/com/baeldung/map/java_8/MergeMaps.java @@ -4,6 +4,8 @@ import com.baeldung.sort.Employee; import java.util.HashMap; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class MergeMaps { @@ -14,16 +16,50 @@ public class MergeMaps { initialize(); + //mergeFunction(); + + //streamConcat(); + + streamOf(); + } + + private static void streamOf() { + Map map3 = Stream.of(map1, map2) + .flatMap(map -> map.entrySet().stream()) + .collect( + Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue, + (v1, v2) -> new Employee(v1.getId(), v2.getName()) + ) + ); + + map3.entrySet().forEach(System.out::println); + } + + private static void streamConcat() { + Map result = Stream.concat(map1.entrySet().stream(), map2.entrySet().stream()).collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue, + (value1, value2) -> new Employee(value1.getId(), value2.getName()) + )); + + result.entrySet().forEach(System.out::println); + } + + private static void mergeFunction() { Map map3 = new HashMap<>(map1); map2.forEach( - (key, value) -> map3.merge(key, value, (v1, v2) -> - new Employee(v1.getId(),v2.getName())) + (key, value) -> map3.merge(key, value, (v1, v2) -> + new Employee(v1.getId(),v2.getName())) ); map3.entrySet().forEach(System.out::println); } + + private static void initialize() { Employee employee1 = new Employee(1L, "Henry"); map1.put(employee1.getName(), employee1);