import
java.util.*;
class
GFG {
public
static
Vector<Integer> mergeArrays(Vector<Integer> a,
Vector<Integer> b,
int
n,
int
m) {
Vector<Integer> mergedArray =
new
Vector<Integer>();
Map<Integer, Boolean> mp =
new
HashMap<Integer, Boolean>();
for
(
int
i =
0
; i < n; i++)
mp.put(a.get(i),
true
);
for
(
int
i =
0
; i < m; i++)
mp.put(b.get(i),
true
);
for
(Map.Entry<Integer, Boolean> i : mp.entrySet())
mergedArray.add(i.getKey());
return
mergedArray;
}
public
static
Map<String, Vector<Integer>> mergeMap(Map<String,
Vector<Integer>> map1, Map<String, Vector<Integer>> map2) {
Map<String, Vector<Integer>> map3 =
new
HashMap<String, Vector<Integer>>();
map3.putAll(map1);
for
(Map.Entry<String, Vector<Integer>> itr : map2.entrySet()) {
if
(!map3.containsKey(itr.getKey()))
map3.put(itr.getKey(), itr.getValue());
else
{
Vector<Integer> temp_itr = map3.get(itr.getKey());
Vector<Integer> arr = mergeArrays(itr.getValue(),
temp_itr, itr.getValue().size(), temp_itr.size());
map3.put(itr.getKey(), arr);
}
}
return
map3;
}
public
static
void
main(String[] args) {
Map<String, Vector<Integer>> map1 =
new
HashMap<String, Vector<Integer>>();
Map<String, Vector<Integer>> map2 =
new
HashMap<String, Vector<Integer>>();
Map<String, Vector<Integer>> map3 =
new
HashMap<String, Vector<Integer>>();
map1.put(
"key1"
,
new
Vector<Integer>(Arrays.asList(
0
,
1
)));
map1.put(
"key2"
,
new
Vector<Integer>(Arrays.asList(
0
,
1
)));
map2.put(
"key2"
,
new
Vector<Integer>(Arrays.asList(
1
,
2
)));
map3 = mergeMap(map1, map2);
for
(Map.Entry<String, Vector<Integer>> itr : map3.entrySet()) {
System.out.print(
"\""
+ itr.getKey() +
"\", { "
);
for
(
int
x : itr.getValue())
System.out.print(x +
" "
);
System.out.println(
"}"
);
}
}
}