O método Java HashMap compute () calcula um novo valor e o associa à chave especificada no hashmap.
A sintaxe do compute()
método é:
hashmap.compute(K key, BiFunction remappingFunction)
Aqui, hashmap é um objeto da HashMap
classe.
Parâmetros compute ()
O compute()
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 BiFunction
.
compute () Return Value
- retorna o novo valor associado à chave
- retorna
null
se nenhum valor associado à chave
Nota : Se remappingFunction resultar null
, então o mapeamento para a chave especificada é removido.
Exemplo: HashMap compute () para inserir um novo valor
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% discount int newPrice = prices.compute("Shoes", (key, value) -> value - value * 10/100); System.out.println("Discounted Price of Shoes: " + newPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )
Resultado
HashMap: (Calça = 150, Bolsa = 300, Sapatos = 200) Preço com desconto de sapatos: 180 HashMap atualizado: (Calça = 150, Bolsa = 300, Sapatos = 180
No exemplo acima, criamos um hashmap denominado preços. Observe a expressão,
prices.compute("Shoes", (key, value) -> value - value * 10/100)
Aqui,
- (chave, valor) -> valor - valor * 10/100 - É uma expressão lambda. Ele reduz o valor antigo dos sapatos em 10% e o retorna. Para saber mais sobre a expressão lambda, visite Expressões Lambda Java.
- prices.compute () - Associa o novo valor retornado pela expressão lambda ao mapeamento de Shoes.
Usamos a expressão lambda como função de remapeamento que leva dois parâmetros.
Nota : De acordo com a documentação oficial do Java, o método HashMap merge () é mais simples do que o compute()
método.
Leitura recomendada
- HashMap computeIfAbsent () - calcula o valor se a chave especificada não for mapeada para nenhum valor
- HashMap computeIfPresent () - calcula o valor se a chave especificada já estiver mapeada para um valor