From 03f28236b8b51812a6fad8cc9b20d4bed7764498 Mon Sep 17 00:00:00 2001 From: mherbaghinyan Date: Fri, 28 Sep 2018 15:08:08 +0400 Subject: [PATCH 1/6] merge maps first example --- .../com/baeldung/map/java_8/MergeMaps.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 core-java-collections/src/main/java/com/baeldung/map/java_8/MergeMaps.java 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 new file mode 100644 index 0000000000..2137bd9094 --- /dev/null +++ b/core-java-collections/src/main/java/com/baeldung/map/java_8/MergeMaps.java @@ -0,0 +1,41 @@ +package com.baeldung.map.java_8; + +import com.baeldung.sort.Employee; + +import java.util.HashMap; +import java.util.Map; + +public class MergeMaps { + + private static Map map1 = new HashMap<>(); + private static Map map2 = new HashMap<>(); + + public static void main(String[] args) { + + initialize(); + + Map map3 = new HashMap<>(map1); + + map2.forEach( + (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); + Employee employee2 = new Employee(22L, "Annie"); + map1.put(employee2.getName(), employee2); + Employee employee3 = new Employee(8L, "John"); + map1.put(employee3.getName(), employee3); + + Employee employee4 = new Employee(2L, "George"); + map2.put(employee4.getName(), employee4); + Employee employee5 = new Employee(1L, "Henry"); + map2.put(employee5.getName(), employee5); + } + +} From ee7fa854b45148eb01fb9bc7adb9c633eb705873 Mon Sep 17 00:00:00 2001 From: mherbaghinyan Date: Fri, 28 Sep 2018 17:32:11 +0400 Subject: [PATCH 2/6] 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); From f0e93ad8fad29d103c55a1ffbdfd3921edd88ddb Mon Sep 17 00:00:00 2001 From: mherbaghinyan Date: Mon, 1 Oct 2018 15:20:32 +0400 Subject: [PATCH 3/6] StreamEx example --- core-java-collections/pom.xml | 5 +++++ .../com/baeldung/map/java_8/MergeMaps.java | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/core-java-collections/pom.xml b/core-java-collections/pom.xml index d0c3c25beb..06b79fff22 100644 --- a/core-java-collections/pom.xml +++ b/core-java-collections/pom.xml @@ -68,6 +68,11 @@ commons-exec 1.3 + + one.util + streamex + 0.6.5 + 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 a5dada4152..e62e95b634 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 @@ -1,8 +1,13 @@ package com.baeldung.map.java_8; import com.baeldung.sort.Employee; +import one.util.streamex.EntryStream; +import one.util.streamex.IntCollector; +import one.util.streamex.StreamEx; +import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -20,7 +25,18 @@ public class MergeMaps { //streamConcat(); - streamOf(); + //streamOf(); + + streamEx(); + } + + private static void streamEx() { + Map map3 = EntryStream.of(map1) + .append(EntryStream.of(map2)) + .toMap((e1, e2) -> e1); + + System.out.println(map3); + } private static void streamOf() { From 7773f968dabe55c7e96f455829e0ec65a13772e6 Mon Sep 17 00:00:00 2001 From: mherbaghinyan Date: Mon, 1 Oct 2018 16:38:10 +0400 Subject: [PATCH 4/6] uncomment the methods --- .../src/main/java/com/baeldung/map/java_8/MergeMaps.java | 6 +++--- 1 file changed, 3 insertions(+), 3 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 e62e95b634..4bf7b6ba5a 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 @@ -21,11 +21,11 @@ public class MergeMaps { initialize(); - //mergeFunction(); + mergeFunction(); - //streamConcat(); + streamConcat(); - //streamOf(); + streamOf(); streamEx(); } From 1f1baf97e96b45026d0e0ecc53c67c7bde56ce4f Mon Sep 17 00:00:00 2001 From: mherbaghinyan Date: Tue, 2 Oct 2018 11:42:11 +0400 Subject: [PATCH 5/6] add one map to another --- .../com/baeldung/map/java_8/MergeMaps.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 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 4bf7b6ba5a..5138d44feb 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 @@ -28,6 +28,24 @@ public class MergeMaps { streamOf(); streamEx(); + + streamMerge(); + } + + private static void streamMerge() { + + Map map3 = map2.entrySet() + .stream() + .collect( + Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue, + (v1, v2) -> new Employee(v1.getId(), v2.getName()), + () -> new HashMap<>(map1) + ) + ); + + System.out.println(map3); } private static void streamEx() { @@ -55,9 +73,9 @@ public class MergeMaps { 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()) + Map.Entry::getKey, + Map.Entry::getValue, + (value1, value2) -> new Employee(value1.getId(), value2.getName()) )); result.entrySet().forEach(System.out::println); @@ -68,14 +86,13 @@ public class MergeMaps { map2.forEach( (key, value) -> map3.merge(key, value, (v1, v2) -> - new Employee(v1.getId(),v2.getName())) + 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); From c79e64844258f0f76701c842a9e106d71f8ca027 Mon Sep 17 00:00:00 2001 From: mherbaghinyan Date: Thu, 4 Oct 2018 12:16:40 +0400 Subject: [PATCH 6/6] changes after review --- .../src/main/java/com/baeldung/map/java_8/MergeMaps.java | 9 ++------- 1 file changed, 2 insertions(+), 7 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 5138d44feb..052cfb8bad 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 @@ -2,12 +2,7 @@ package com.baeldung.map.java_8; import com.baeldung.sort.Employee; import one.util.streamex.EntryStream; -import one.util.streamex.IntCollector; -import one.util.streamex.StreamEx; - -import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -75,7 +70,7 @@ public class MergeMaps { 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()) + (value1, value2) -> new Employee(value2.getId(), value1.getName()) )); result.entrySet().forEach(System.out::println); @@ -103,7 +98,7 @@ public class MergeMaps { Employee employee4 = new Employee(2L, "George"); map2.put(employee4.getName(), employee4); - Employee employee5 = new Employee(1L, "Henry"); + Employee employee5 = new Employee(3L, "Henry"); map2.put(employee5.getName(), employee5); }