Método computeIfAbsent() de Java HashMap
El método computeIfAbsent() recalcula el valor de la clave especificada en el HashMap; si no existe esta clave, la agrega al HashMap.
La sintaxis del método computeIfAbsent() es:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Nota:hashmap es un objeto de la clase HashMap.
Descripción de parámetros:
- key - la clave
- remappingFunction - función de reasignación, utilizada para recalcular el valor
Valor de retorno
Si el valor correspondiente a la clave no existe, se utiliza el valor recalculado obtenido de remappingFunction y se guarda como el valor de la clave; de lo contrario, se devuelve el valor.
Ejemplo
El siguiente ejemplo demuestra el uso del método computeIfAbsent():
Ejemplo
class Main {
public static void main(String[] args) {
// Crear un HashMap
HashMap<String, Integer> prices = new HashMap<>();
// Agregar entradas de asignación al HashMap
prices.put("Shoes", 200);
prices.put("Bag", 300);
prices.put("Pant", 150);
System.out.println("HashMap: " + prices);
// Calcular el valor de Shirt
int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280);
System.out.println("Price of Shirt: " + shirtPrice);
// Imprimir el HashMap actualizado
System.out.println("Updated HashMap: " + prices);
}
}
Al ejecutar el programa anterior, el resultado es:
HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shirt: 280
Updated HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}
En el ejemplo anterior, creamos un HashMap llamado prices.
Observe la expresión:
prices.computeIfAbsent("Shirt", key -> 280)
En el código, usamos una función anónima (expresión lambda)key-> 280como función de reasignación; prices.computeIfAbsent() asocia el nuevo valor devuelto por la expresión lambda a Shirt.
Como Shirt no existe en el HashMap, se añadió un nuevo par clave/valor.
Para obtener más información sobre las expresiones lambda, visitaExpresiones lambda en Java。
Caso en el que la clave ya existe:
Ejemplo
class Main {
public static void main(String[] args) {
// Crear un HashMap
HashMap<String, Integer> prices = new HashMap<>();
// Agregar relaciones de asignación al HashMap
prices.put("Shoes", 180);
prices.put("Bag", 300);
prices.put("Pant", 150);
System.out.println("HashMap: " + prices);
// La relación de asignación para Shoes ya existe
// Shoes no calcula un nuevo valor
int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280);
System.out.println("Price of Shoes: " + shoePrice);
// Imprimir el HashMap actualizado
System.out.println("Updated HashMap: " + prices);
}
}
Al ejecutar el programa anterior, el resultado es:
HashMap: {Pant=150, Bag=300, Shoes=180}
Price of Shoes: 180
Updated HashMap: {Pant=150, Bag=300, Shoes=180}En el ejemplo anterior, la relación de asignación de Shoes ya existe en el HashMap, por lo que no se calcula un nuevo valor para Shoes.
Otras extensiones
Java HashMap