English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O método computeIfAbsent() do Java HashMap calcula um novo valor, se a chave não estiver associada a nenhum valor no mapeamento de hash, associando-a à chave especificada.
A sintaxe do método computeIfAbsent() é:
hashmap.computeIfAbsent(K key, Function remappingFunction)
O método computeIfAbsent() tem dois parâmetros:
key - 与计算值关联的键
Com a chave associada ao valor calculado - remappingFunctionChavePara a chave especificada
NotarCalcular a função do novo valor
computeIfAbsent() retorna o valor
É a função que calcula o novo valor para a chave especificada
Notar:Se o resultado da função de remapeamento for null, a chave especificadaChavedo mapeamento.
import java.util.HashMap; class Main { public static void main(String[] args) { // Criar HashMap HashMap<String, Integer> prices = new HashMap<>(); // Inserir entrada no HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: "} + prices); // Calcular o valor do camiseta int shirtPrice = prices.computeIfAbsent("Shirt", (key -> 280); System.out.println("Preço do camiseta: "} + shirtPrice); // Imprimir atualização do HashMap System.out.println("HashMap atualizado: "); + prices); } }
Resultados de Saída
HashMap: {Pant=150, Bag=300, Shoes=200} Preço do camiseta: 280 HashMap atualizado: {Pant=150, Shirt=280, Bag=300, Shoes=200}
No exemplo acima, criamos um mapeamento chamado prices. Observe a expressão
prices.computeIfAbsent("Shirt", (key -> 280)
Aqui,
key -> 280 - É uma expressão lambda. Ela retorna o valor280. Para obter mais informações sobre expressões lambda, acesseExpressões Lambda Java.
prices.computeIfAbsent() - Associar o novo valor retornado pela expressão lambda ao mapeamento de Shirt. Isso é possível porque Shirt ainda não está mapeado a nenhum valor no hashmap.
import java.util.HashMap; class Main { public static void main(String[] args) { // Criar HashMap HashMap<String, Integer> prices = new HashMap<>(); // Inserir entrada no HashMap prices.put("Shoes", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: "} + prices); //A mapeamento de Shoes já existe //Não calcular o novo valor de Shoes int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Preço do sapato: "} + shoePrice); //Imprimir o HashMap atualizado System.out.println("HashMap atualizado: "); + prices); } }
Resultados de Saída
HashMap: {Pant=150, Bag=300, Shoes=180} Preço do sapato: 180 HashMap atualizado: {Pant=150, Bag=300, Shoes=180}
No exemplo acima, o mapeamento de Shoes já existe no mapeamento hash. Portanto, o método computeIfAbsent() não calculará um novo valor para Shoes.
Leia mais
HashMap compute() - Calcular o valor da chave especificada
HashMap computeIfPresent() - Se a chave já estiver mapeada para um valor, calcular esse valor
Método merge() do HashMap Java - Executa a mesma tarefa que compute()