Given a Map with null values in it, the task is to replace all the null values with a default value.
Examples:
Input: map = {1=1, 2=2, 3=null, 4=4, 5=null, 6=null}, defaultValue = 0
Output: {1=1, 2=2, 3=0, 4=4, 5=0, 6=0}Input: map = {1=A, 2=B, 3=null, 4=D, 5=null, 6=null}, defaultValue = ‘Z’
Output: {1=A, 2=B, 3=Z, 4=D, 5=Z, 6=Z}
Approach:
- Get the map with null values and the default value to be replaced with.
- Get the set view of the Map using Map.entrySet() method.
- Convert the obtained set view into stream using stream() method.
- Now map the null values to default value with the help of map() method.
- Collect the modified stream into Map using collect() method.
- The null values has been successfully replaced with default value.
Below is the implementation of the above approach:
Example 1: With integers.
// Java program to replace null values // of a map with a default value import java.util.*; import java.util.stream.*; class GFG { // Function to replace the null values public static <T, K> Map<K, T> replaceNullValues(Map<K, T> map, T defaultValue) { // Replace the null value map = map.entrySet() .stream() .map(entry -> { if (entry.getValue() == null ) entry.setValue(defaultValue); return entry; }) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); return map; } public static void main(String[] args) { // Get the map Map<Integer, Integer> map = new HashMap<>(); map.put( 1 , 1 ); map.put( 2 , 2 ); map.put( 3 , null ); map.put( 4 , 4 ); map.put( 5 , null ); map.put( 6 , null ); // Get the default value int defaultValue = 0 ; // Print the original map System.out.println( "Map with null values: " + map); // Replace the null values with the defaultValue map = replaceNullValues(map, defaultValue); // Print the modified map System.out.println( "Map with null value replaced: " + map); } } |
Map with null values: {1=1, 2=2, 3=null, 4=4, 5=null, 6=null} Map with null value replaced: {1=1, 2=2, 3=0, 4=4, 5=0, 6=0}
Example 2: With characters.
// Java program to replace null values // of a map with a default value import java.util.*; import java.util.stream.*; class GFG { // Function to replace the null values public static <T, K> Map<K, T> replaceNullValues(Map<K, T> map, T defaultValue) { // Replace the null value map = map.entrySet() .stream() .map(entry -> { if (entry.getValue() == null ) entry.setValue(defaultValue); return entry; }) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); return map; } public static void main(String[] args) { // Get the map Map<Integer, Character> map = new HashMap<>(); map.put( 1 , 'A' ); map.put( 2 , 'B' ); map.put( 3 , null ); map.put( 4 , 'D' ); map.put( 5 , null ); map.put( 6 , null ); // Get the default value char defaultValue = 'Z' ; // Print the original map System.out.println( "Map with null values: " + map); // Replace the null values with the defaultValue map = replaceNullValues(map, defaultValue); // Print the modified map System.out.println( "Map with null value replaced: " + map); } } |
Map with null values: {1=A, 2=B, 3=null, 4=D, 5=null, 6=null} Map with null value replaced: {1=A, 2=B, 3=Z, 4=D, 5=Z, 6=Z}