English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo de Java

Java Arreglo

Java Orientado a Objetos (I)

Java Orientado a Objetos (II)

Java Orientado a Objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Cola (Queue)

Java Colección (Map)

Java Conjunto (Set)

Java Entrada/Salida (I/O)

Reader de Java/Writer

Otras temáticas de Java

Uso y ejemplo del método computeIfAbsent() de Java HashMap

Java HashMap 方法

El método computeIfAbsent() de Java HashMap calcula un nuevo valor, si la clave no está asociada con ningún valor en el mapeo de hash, se asocia con la clave especificada.

La sintaxis del método computeIfAbsent() es:

hashmap.computeIfAbsent(K clave, Function funciónRemap)

Parámetros de computeIfAbsent()

El método computeIfAbsent() tiene dos parámetros:

  • key - La clave asociada con el valor calculado

  • remappingFunction - Para la clave especificadaClaveLa función para calcular un nuevo valor

Nota:La función de remapping no puede aceptar dos parámetros.

El valor devuelto por computeIfAbsent()

  • Devuelve el nuevo valor o el valor antiguo asociado con la clave especificada

  • La función para calcular un nuevo valor para la clave especificada

Nota:Si el resultado de remappingFunction es null, se eliminará la clave especificadaClavedel mapeo.

Ejemplo1:Mapeo de Java HashMap computeIfAbsent()

import java.util.HashMap;
class Main {
  public static void main(String[] args) {
    // Crear HashMap
    HashMap<String, Integer> prices = new HashMap<>();
    // Insertar entrada en HashMap
    prices.put("Shoes", 200);
    prices.put("Bag", 300);
    prices.put("Pant", 150);
    System.out.println("HashMap: " + prices);
    // Calcular el valor de la camisa
    int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280);
    System.out.println("El precio de la camisa: ") + shirtPrice);
    // Imprimir HashMap actualizado
    System.out.println("更新后的 HashMap: " + prices);
  }
}

输出结果

HashMap: {Pant=150, Bag=300, Shoes=200}
El precio de la camisa: 280
更新后的 HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}

En el ejemplo anterior, creamos un mapeo de hash llamado prices. Nota la expresión

prices.computeIfAbsent("Shirt", key -> 280)

Aquí,

  • key -> 280 - Es una expresión lambda. Devuelve el valor280. Para obtener más información sobre las expresiones lambda, visiteJava Lambda 表达式.

  • prices.computeIfAbsent() -  Asociar el nuevo valor devuelto por la expresión lambda con el mapeo de Shirt. Esto es posible porque Shirt aún no está mapeado a ningún valor en el hashmap.

Ejemplo2:Si la clave ya existe, use computeIfAbsent()

import java.util.HashMap;
class Main {
  public static void main(String[] args) {
    // Crear HashMap
    HashMap<String, Integer> prices = new HashMap<>();
    // Insertar entrada en HashMap
    prices.put("Shoes", 180);
    prices.put("Bag", 300);
    prices.put("Pant", 150);
    System.out.println("HashMap: " + prices);
    //La mapeo de Shoes ya existe
    //No se calculará el nuevo valor de Shoes
    int shoePrice = prices.computeIfAbsent("Shoes", key -> 280);
    System.out.println("El precio de los zapatos: " + shoePrice);
    //打印更新的HashMap
    System.out.println("更新后的 HashMap: " + prices);
  }
}

输出结果

HashMap: {Pant=150, Bag=300, Shoes=180}
鞋子价格: 180
更新后的 HashMap: {Pant=150, Bag=300, Shoes=180}

在以上示例中,Shoes的映射已经存在于哈希映射中。 因此,computeIfAbsent()方法不会计算Shoes的新值。

推荐阅读

Java HashMap 方法