Java HashMap computeIfPresent ()

O método Java HashMap computeIfPresent () calcula um novo valor e o associa à chave especificada se a chave já estiver presente no hashmap.

A sintaxe do computeIfPresent()método é:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Aqui, hashmap é um objeto da HashMapclasse.

Parâmetros computeIfPresent ()

O computeIfPresent()método leva 2 parâmetros:

  • chave - chave com a qual o valor calculado deve ser associado
  • remappingFunction - função que calcula o novo valor para a chave especificada

Observação : o remappingFunction pode receber dois argumentos. Portanto, considerado como BiFunção.

Valor de retorno computeIfPresent ()

  • retorna o novo valor associado à chave especificada
  • retorna nullse nenhum valor associado à chave

Nota : Se remappingFunction resultar null, então o mapeamento para a chave especificada é removido.

Exemplo 1: Java HashMap computeIfPresent ()

 import java.util.HashMap; class Main ( public static void main(String() args) ( // create an HashMap HashMap prices = new HashMap(); // insert entries to the HashMap prices.put("Shoes", 200); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // recompute the value of Shoes with 10% VAT int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Resultado

 HashMap: (Calça = 150, Bolsa = 300, Sapatos = 200) Preço dos sapatos após o IVA: 220 HashMap atualizado: (Calça = 150, Bolsa = 300, Sapatos = 220))

No exemplo acima, criamos um hashmap denominado preços. Observe a expressão,

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Aqui,

  • (chave, valor) -> valor + valor * 10/100 é uma expressão lambda. Ele calcula o novo valor de Shoes e o retorna. Para saber mais sobre a expressão lambda, visite Expressões Lambda Java.
  • prices.computeIfPresent () associa o novo valor retornado pela expressão lambda ao mapeamento para Shoes. Isso só é possível porque Shoes já está mapeado para um valor no hashmap.

Aqui, a expressão lambda atua como função de remapeamento. E, leva dois parâmetros.

Nota : Não podemos usar o computeIfPresent()método se a chave não estiver presente no hashmap.

Leitura recomendada

  • HashMap compute () - calcula o valor da chave especificada
  • HashMap computeIfAbsent () - calcula o valor se a chave especificada não for mapeada para nenhum valor
  • Java HashMap merge () - executa a mesma tarefa que compute()

Artigos interessantes...