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 HashMap
clase.
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
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: 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