Java HashMap compute ()

El método compute () de Java HashMap calcula un nuevo valor y lo asocia con la clave especificada en el mapa de hash.

La sintaxis del compute()método es:

 hashmap.compute(K key, BiFunction remappingFunction)

Aquí, hashmap es un objeto de la HashMapclase.

Parámetros de compute ()

El compute()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.

compute () Valor de retorno

  • devuelve el nuevo valor asociado con la clave
  • 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: HashMap compute () para insertar un nuevo valor

 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% discount int newPrice = prices.compute("Shoes", (key, value) -> value - value * 10/100); System.out.println("Discounted Price of Shoes: " + newPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Salida

 HashMap: (Pantalón = 150, Bolsa = 300, Zapatos = 200) Precio con descuento de zapatos: 180 HashMap actualizado: (Pantalón = 150, Bolsa = 300, Zapatos = 180

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

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

Aquí,

  • (clave, valor) -> valor - valor * 10/100 - Es una expresión lambda. Reduce el valor anterior de Zapatos en un 10% y lo devuelve. Para obtener más información sobre la expresión lambda, visite Java Lambda Expressions.
  • precios.compute () : asocia el nuevo valor devuelto por la expresión lambda al mapeo de Zapatos.

Hemos utilizado la expresión lambda como función de reasignación que rastrilla dos parámetros.

Nota : Según la documentación oficial de Java, el método merge () de HashMap es más simple que el compute()método.

Lectura recomendada

  • HashMap computeIfAbsent (): calcula el valor si la clave especificada no está asignada a ningún valor
  • HashMap computeIfPresent (): calcula el valor si la clave especificada ya está asignada a un valor

Articulos interesantes...