Método computeIfAbsent() de Java HashMap

Java HashMap 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

import java.util.HashMap;

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

import java.util.HashMap;

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.

Java HashMap Java HashMap

Otras extensiones