-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMergeTwoMapEx.java
More file actions
56 lines (43 loc) · 1.99 KB
/
Copy pathMergeTwoMapEx.java
File metadata and controls
56 lines (43 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package java8.terminalOperation;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BinaryOperator;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class MergeTwoMapEx {
public static void main(String[] args) {
Map<String, Employee2> map1 = new HashMap<>();
Map<String, Employee2> map2 = new HashMap<>();
Employee2 employee1 = new Employee2(1L, "Deepak");
Employee2 employee2 = new Employee2(22L, "DH");
Employee2 employee3 = new Employee2(8L, "Joy");
map1.put(employee1.getName(), employee1);
map1.put(employee2.getName(), employee2);
map1.put(employee3.getName(), employee3);
Employee2 employee4 = new Employee2(2L, "GEM");
Employee2 employee5 = new Employee2(3L, "Deepak");
map2.put(employee4.getName(), employee4);
map2.put(employee5.getName(), employee5);
mergeIntoThrid(map1, map2);
streamConcatMap(map1, map2);
}
private static void streamConcatMap(Map<String, Employee2> map1, Map<String, Employee2> map2) {
// In case of same key - while merging consider this
BinaryOperator<Employee2> binaryOper = (v1, v2) -> new Employee2(v1.getId() + v2.getId(), v2.getName());
Map<String, Employee2> mergedMap = Stream.concat(map1.entrySet().stream(), map2.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, binaryOper, HashMap::new));
System.out.println(mergedMap);
System.out.println(mergedMap.get("Deepak").getId() + " " + mergedMap.get("Deepak").getName());
}
private static void mergeIntoThrid(Map<String, Employee2> map1, Map<String, Employee2> map2) {
System.out.println(map1);
System.out.println(map2);
Map<String, Employee2> map3 = new HashMap<>(map1);
System.out.println(map3);
map2.forEach((key, value) -> {
// v1 and v2 are 2 object are getting merged in to single
map3.merge(key, value, (v1, v2) -> new Employee2(v1.getId() + v2.getId(), v2.getName() + "-Merge"));
});
System.out.println(map3.get("Deepak").getId() + " " + map3.get("Deepak").getName());
}
}