Java HashMap computeIfAbsent ()

El método computeIfAbsent () de Java HashMap calcula un valor nuevo y lo asocia con la clave especificada si la clave no está asociada con ningún valor en el mapa de hash.

La sintaxis del computeIfAbsent()método es:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Aquí, hashmap es un objeto de la HashMapclase.

Parámetros de computeIfAbsent ()

El computeIfAbsent()método toma 2 parámetros:

  • clave : clave con la que se asociará el valor calculado
  • remappingFunction - función que calcula el nuevo valor para la clave especificada

Nota : La función de reasignación no puede aceptar dos argumentos.

computeIfAbsent () Valor de retorno

  • devuelve el valor nuevo o antiguo asociado con la clave especificada
  • devuelve nullsi no hay ningún valor asociado con la clave

Nota : Si se produce remappingFunction null, se elimina la asignación de la clave especificada .

Ejemplo 1: Java HashMap computeIfAbsent ()

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Salida

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Precio de la camisa: 280 HashMap actualizado: (Pant = 150, Shirt = 280, Bag = 300, Shoes = 200)

En el ejemplo anterior, hemos creado un mapa de hash llamado precios. Note la expresión,

 prices.computeIfAbsent("Shirt", key -> 280)

Aquí,

  • key -> 280 es una expresión lambda. Devuelve el valor 280. Para obtener más información sobre la expresión lambda, visite Java Lambda Expressions.
  • price.computeIfAbsent () asocia el nuevo valor devuelto por la expresión lambda al mapeo de Shirt. Solo es posible porque Shirt ya no está asignado a ningún valor en el mapa de hash.

Ejemplo 2: computeIfAbsent () si la clave ya está presente

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Salida

 HashMap: (Pant = 150, Bag = 300, Shoes = 180) Precio de los zapatos: 180 HashMap actualizado: (Pant = 150, Bag = 300, Shoes = 180)

En el ejemplo anterior, el mapeo de Zapatos ya está presente en el mapa de hash. Por lo tanto, el computeIfAbsent()método no calcula el nuevo valor de Zapatos.

Lectura recomendada

  • HashMap compute (): calcula el valor de la clave especificada
  • HashMap computeIfPresent (): calcula el valor si la clave especificada ya está asignada a un valor
  • Merge () de Java HashMap: realiza la misma tarea que compute()

Articulos interesantes...