How to Merge Two HashMaps in Java while Handling Conflicts?
Last Updated :
21 Feb, 2024
HashMap is a part of the collection framework found in Java. It is found in the java.util package and provides the basic implementation of the Map interface of Java. Conflict handling is very important in HashMap as if they are ignored the code will not work properly.
In this article, we will learn how to merge two HashMaps in Java while handling conflicts.
Approaches to Merge Two HashMaps while Handling Conflicts
Java typically merges and resolves the conflict between HasMap by different methods:
- Using put() and putAll()
- Using a merge() method
Program to Merge Two HashMaps While Handling Conflicts in Java
Below is the code implementation of the two approaches.
Approach 1: Using put() and putAll()
When we have two or more HashMap and want to merge them then we do that using put() and putAll() methods to merge two, the key which is present in both the HashMap.
Java
import java.util.*;
class GFG {
public static void main(String[] args)
{
HashMap<String, Integer> map1 = new HashMap<>();
HashMap<String, Integer> map2 = new HashMap<>();
map1.put( "key" , 1 );
map2.put( "key" , 5 );
map1.put( "Key1" , 2 );
map2.put( "key2" , 4 );
map2.put( "Key2" , 4 );
map1.putAll(map2);
System.out.println( "The resultant map is : " + map1);
}
}
|
Output
The resultant map is : {Key2=4, Key1=2, key2=4, key=5}
Explanation of the above Program:
- Initially two hashmap has been created.
- One key-value pair have been added which is same initially in both the maps.
- The putAll() is used to merge both the maps.
- The map2 key-value which is already present in map1 replaces the initial value.
Approach 2: Using merge() method
When the merge() method is used to merge two HashMap, we can specify a merging function to handle conflicts while merging two HashMap.
Java
import java.util.*;
class GFG {
public static void main(String[] args)
{
HashMap<String, Integer> map1 = new HashMap<>();
HashMap<String, Integer> map2 = new HashMap<>();
map1.put( "key" , 11 );
map1.put( "key1" , 2 );
map1.put( "key3" , 13 );
map2.put( "key" , 10 );
map2.put( "key4" , 5 );
map2.put( "key5" , 14 );
mergeFun(map1, map2);
System.out.println( "The resultant map is : "
+ map1);
}
public static void
mergeFun(HashMap<String, Integer> map1,
HashMap<String, Integer> map2)
{
map2.forEach(
(key, value)
-> map1.merge(key, value, Integer::sum));
}
}
|
Output
The resultant map is : {key1=2, key5=14, key3=13, key4=5, key=21}
Explanation of the Program:
- Initially two hashmaps are created and values are updated in the two maps.
- Then we have used the merge() function and specify to add the two values which have the same key in the merged map.
- The code updates the sum of the two values in the merged map.
Share your thoughts in the comments
Please Login to comment...