Compute if Absent

A lot of times if a key is not present in Map then it needs to be added to the Map and its value must be computed via another Function.

package org.wesome.java8;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

class Apple {
    public static void main(String[] args) {

        Map<Integer, String> map = new HashMap<>();
        map.put(1, "1");
        map.put(2, "10");
        map.put(3, "11");
        if (Objects.isNull(map.get(4))) {
            map.put(4, convertIntegerToBinaryString(4));
        }

        System.out.println("map = " + map);
    }

    private static String convertIntegerToBinaryString(int integer) {
        return Integer.toBinaryString(integer);
    }
}

To avoid the boilerplate if-else code, java 8 introduces computeIfAbsent method, if the key is absent in the Map, then its value will be computed via a Function and the newly generated value will be added to the Map as well.

computeIfAbsent method will modify the existing Map as well

The computeIfAbsent method will be available for all Map Intertface implementing concrete classes such as HashMapLinkedHashMap and TreeMap ect

package org.wesome.java8;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

class Apple {
    public static void main(String[] args) {
        Function<Integer, String> function = Integer::toBinaryString;

        Map<Integer, String> map = new HashMap<>();
        map.put(1, "1");
        map.put(2, "10");
        map.put(3, "11");

        map.computeIfAbsent(4, function);

        System.out.println("map = " + map);
    }
}

if the Mapping Function returns null, in that case no value will be added in the Map

follow us on