Java HashMap computeIfAbsent ()

O método Java HashMap computeIfAbsent () calcula um novo valor e o associa à chave especificada se a chave não estiver associada a nenhum valor no hashmap.

A sintaxe do computeIfAbsent()método é:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Aqui, hashmap é um objeto da HashMapclasse.

Parâmetros computeIfAbsent ()

O computeIfAbsent()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

Nota : A função de remapeamento não pode aceitar dois argumentos.

Valor de retorno computeIfAbsent ()

  • retorna o valor novo ou antigo 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 computeIfAbsent ()

 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); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Resultado

 HashMap: (Calça = 150, Bolsa = 300, Sapatos = 200) Preço da camisa: 280 HashMap atualizado: (Calça = 150, Camisa = 280, Bolsa = 300, Sapatos = 200)

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

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

Aqui,

  • key -> 280 é uma expressão lambda. Ele retorna o valor 280. Para saber mais sobre a expressão lambda, visite Expressões Lambda Java.
  • prices.computeIfAbsent () associa o novo valor retornado pela expressão lambda ao mapeamento para Shirt. Isso só é possível porque Shirt já não está mapeado para nenhum valor no hashmap.

Exemplo 2: computeIfAbsent () se a chave já estiver presente

 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", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Resultado

 HashMap: (Calça = 150, Bolsa = 300, Sapatos = 180) Preço dos sapatos: 180 HashMap atualizado: (Calça = 150, Bolsa = 300, Sapatos = 180)

No exemplo acima, o mapeamento para Shoes já está presente no hashmap. Portanto, o computeIfAbsent()método não calcula o novo valor para Shoes.

Leitura recomendada

  • HashMap compute () - calcula o valor da chave especificada
  • HashMap computeIfPresent () - calcula o valor se a chave especificada já estiver mapeada para um valor
  • Java HashMap merge () - executa a mesma tarefa que compute()

Artigos interessantes...