Java HashMap computeIfPresent ()

El método computeIfPresent () de Java HashMap calcula un nuevo valor y lo asocia con la clave especificada si la clave ya está presente en el mapa hash.

La sintaxis del computeIfPresent()método es:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Aquí, hashmap es un objeto de la HashMapclase.

Parámetros de computeIfPresent ()

El computeIfPresent()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 remappingFunction puede tomar dos argumentos. Por lo tanto, considerado como BiFunction.

computeIfPresent () Valor de retorno

  • devuelve el nuevo valor 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 computeIfPresent ()

 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); // recompute the value of Shoes with 10% VAT int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Salida

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Precio de los zapatos después del IVA: 220 HashMap actualizado: (Pant = 150, Bag = 300, Shoes = 220))

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

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Aquí,

  • (clave, valor) -> valor + valor * 10/100 es una expresión lambda. Calcula el nuevo valor de Zapatos y lo devuelve. Para obtener más información sobre la expresión lambda, visite Java Lambda Expressions.
  • precios.computeIfPresent () asocia el nuevo valor devuelto por la expresión lambda al mapeo de Zapatos. Solo es posible porque Zapatos ya está asignado a un valor en el mapa de hash.

Aquí, la expresión lambda actúa como función de reasignación. Y se necesitan dos parámetros.

Nota : No podemos usar el computeIfPresent()método si la clave no está presente en el mapa hash.

Lectura recomendada

  • HashMap compute (): calcula el valor de la clave especificada
  • HashMap computeIfAbsent (): calcula el valor si la clave especificada no está asignada a ningún valor
  • Merge () de Java HashMap: realiza la misma tarea que compute()

Articulos interesantes...