El método putIfAbsent (clave K, valor V) de la clase HashMap se usa para asignar la clave especificada con el valor especificado, solo si no existe dicha clave (o está asignada a nulo) en esta instancia de HashMap.
Sintaxis:
public V putIfAbsent(K key, V value)
Parámetros: Este método acepta dos parámetros:
- clave: que es la clave con la que se debe mapear el valor proporcionado.
- valor: que es el valor que debe asociarse con la clave proporcionada, si está ausente.
Valor devuelto:
Este método devuelve un valor nulo (si no hubo una asignación con la clave proporcionada antes o si se asignó a un valor nulo) o el valor actual asociado con la clave proporcionada.
Excepciones:
Este método puede arrojar las siguientes excepciones:
- NullPointerException: si la clave o el valor especificado es nulo y este mapa no admite el valor nulo.
- IllegalArgumentException: si la clave o el valor especificado impide que se almacene en el mapa.
- UnsupportedOperationException : si la operación de colocación no es compatible con este mapa (opcional)
- ClassCastException : si la clave o el valor es de un tipo inapropiado para este mapa (opcional)
Programa 1:
Java
// Java program to demonstrate // putIfAbsent(Key, value) method. import java.util.HashMap; public class TestClass { // Main method public static void main(String[] args) { // create a HashMap and add some values HashMap<String, Integer> map = new HashMap<>(); map.put("a", 10000); map.put("b", 55000); map.put("c", 44300); map.put("e", 53200); // print original map System.out.println("HashMap:\n " + map.toString()); // put a new value which is not mapped // before in map map.putIfAbsent("d", 77633); System.out.println("New HashMap:\n " + map); // try to put a new value with existing key // before in map map.putIfAbsent("d", 55555); // print newly mapped map System.out.println("Unchanged HashMap:\n " + map); } }
Producción
HashMap: {a=10000, b=55000, c=44300, e=53200} New HashMap: {a=10000, b=55000, c=44300, d=77633, e=53200} Unchanged HashMap: {a=10000, b=55000, c=44300, d=77633, e=53200}
Programa 2:
Java
// Java program to demonstrate // putIfAbsent(Key, value) method. import java.util.*; public class GFG { // Main method public static void main(String[] args) { // create a HashMap and add some values HashMap<String, Integer> map = new HashMap<>(); map.put("a", 10000); map.put("b", 55000); map.put("c", 44300); map.put("e", null); // print original map System.out.println("HashMap:\n " + map.toString()); // put a new value which is not mapped // before in map and store the returned // value in r1 Integer r1 = map.putIfAbsent("d", 77633); // put a new value for key 'e' which is mapped // with a null value, and store the returned // value in r2 Integer r2 = map.putIfAbsent("e", 77633); // print the value of r1 System.out.println("Value of r1:\n " + r1); // print the value of r2 System.out.println("Value of r2:\n " + r2); // print newly mapped map System.out.println("New HashMap:\n " + map); } }
Producción
HashMap: {a=10000, b=55000, c=44300, e=null} Value of r1: null Value of r2: null New HashMap: {a=10000, b=55000, c=44300, d=77633, e=77633}
Referencia: https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html#putIfAbsent-KV-