English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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)
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.
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.
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.
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的新值。
推荐阅读
HashMap compute() - 计算指定键的值
HashMap computeIfPresent() - 如果指定的键已经映射到一个值,则计算该值
Java HashMap merge() - 与compute()执行相同的任务