Método hashtable computeIfAbsent() en Java con ejemplos

El método computeIfAbsent(Key, Function) de la clase Hashtable que le permite calcular el valor de una asignación para una clave específica si la clave no está ya asociada con un valor (o está asignada a un valor nulo).

  • Si la función de mapeo de este método devuelve un valor nulo, entonces no se registra ningún mapeo.
  • Si la función de reasignación arroja una excepción, la excepción se vuelve a generar y se registra la ausencia de asignación.
  • Durante el cálculo, no se permite la modificación de este mapa utilizando este método.
  • Este método generará una ConcurrentModificationException si la función de reasignación modificó este mapa durante el cálculo.

Sintaxis:

public V 
       computeIfAbsent(K key,
             Function<? super K, ? extends V> remappingFunction)

Parámetros: Este método acepta dos parámetros:

  • key : clave con la que se va a asociar el valor.
  • remappingFunction : función para realizar la operación sobre el valor.

Devoluciones: este método devuelve el valor actual (existente o calculado) asociado con la clave especificada, o nulo si la asignación devuelve nulo .

Excepción: este método arroja:

  • ConcurrentModificationException : si se detecta que la función de reasignación modificó este mapa.

Los siguientes programas ilustran el método computeIfAbsent(Key, Function):

Programa 1:

// Java program to demonstrate
// computeIfAbsent(Key, Function) method.
  
import java.util.*;
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
  
        // create a table and add some values
        Map<String, Integer> table = new Hashtable<>();
        table.put("Pen", 10);
        table.put("Book", 500);
        table.put("Clothes", 400);
        table.put("Mobile", 5000);
  
        // print map details
        System.out.println("hashTable: "
                           + table.toString());
  
        // provide value for new key which is absent
        // using computeIfAbsent method
        table.computeIfAbsent("newPen", k -> 600);
        table.computeIfAbsent("newBook", k -> 800);
  
        // print new mapping
        System.out.println("new hashTable: "
                           + table);
    }
}
Producción:

hashTable: {Book=500, Mobile=5000, Pen=10, Clothes=400}
new hashTable: {newPen=600, Book=500, newBook=800, Mobile=5000, Pen=10, Clothes=400}

Programa 2:

// Java program to demonstrate
// computeIfAbsent(Key, Function) method.
  
import java.util.*;
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
  
        // create a table and add some values
        Map<Integer, String> table = new Hashtable<>();
        table.put(1, "100RS");
        table.put(2, "500RS");
        table.put(3, "1000RS");
  
        // print map details
        System.out.println("hashTable: "
                           + table.toString());
  
        // provide value for new key which is absent
        // using computeIfAbsent method
        table.computeIfAbsent(4, k -> "600RS");
  
        // this will not effect anything
        // because key 1 is present
        table.computeIfAbsent(1, k -> "800RS");
  
        // print new mapping
        System.out.println("new hashTable: "
                           + table);
    }
}
Producción:

hashTable: {3=1000RS, 2=500RS, 1=100RS}
new hashTable: {4=600RS, 3=1000RS, 2=500RS, 1=100RS}

Referencias: https://docs.oracle.com/javase/10/docs/api/java/util/Hashtable.html#computeIfAbsent(K, java.util.function.Function)

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *