English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Se a chave hash já existir, o método computeIfPresent() do Java HashMap calculará um novo valor e o associará à chave especificada.
A sintaxe do método computeIfPresent() é: }}
hashmap.computeIfPresent(K key, BiFunction remappingFunction)
O método computeIfPresent() tem dois parâmetros:
key - chave associada ao valor calculado
remappingFunction - Para oChaveFunção de cálculo do novo valor
Nota:A função remappingFunction pode aceitar dois parâmetros.
Retorna o novo valor associado à chave especificada
Se não houver valor associado a uma chave, retorna null
Nota:Se o resultado da função remappingFunction for null, o valor especificadoChavemapeamento.
import java.util.HashMap; class Main { public static void main(String[] args) { // Criando HashMap HashMap<String, Integer> prices = new HashMap<>(); // Inserindo itens no HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: ") + prices); //usando10recalculando o valor do sapato com o imposto adicional int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Preço do sapato com imposto adicional: ") + shoesPrice); // Imprimir HashMap atualizado System.out.println("HashMap atualizado: ") + prices); } }
Resultados de saída
HashMap: {Pant=150, Bag=300, Shoes=200} Preço do sapato com imposto adicional: 220 HashMap atualizado: {Pant=150, Bag=300, Shoes=220}}
No exemplo acima, criamos um mapeamento hash chamado prices. Observe a expressão
prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)
Aqui,
(key, value) -> value + value*10/100 - É uma expressão lambda. Ela calcula o novo valor do Shoes e retorna. Para obter mais informações sobre expressões lambda, acesseExpressões Lambda Java.
prices.computeIfPresent() - Atribua o novo valor retornado pela expressão lambda ao mapeamento do Shoes. Isso é possível apenas porque Shoes já está mapeado ao valor na hash table.
Se a chave não existir no hash table, não é possível usar o método computeIfPresent().
Leia mais
HashMap compute() - Calcule o valor da chave especificada
HashMap computeIfAbsent() - Se a chave especificada não estiver mapeada a qualquer valor, compute a valor
HashMap merge() Java - Executa a mesma tarefa que compute()