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 HashMap
clase.
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
null
si 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()