Java HashMap computeIfPresent ()

Metoda Java HashMap computeIfPresent () oblicza nową wartość i kojarzy ją z określonym kluczem, jeśli klucz jest już obecny w tablicy mieszania.

Składnia computeIfPresent()metody to:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Tutaj hashmap jest obiektem tej HashMapklasy.

computeIfPresent () Parametry

computeIfPresent()Sposobie, 2 parametry:

  • klucz - klucz, z którym ma być skojarzona wyliczana wartość
  • remappingFunction - funkcja obliczająca nową wartość dla określonego klucza

Uwaga : funkcja remappingFunction może przyjmować dwa argumenty. Dlatego uważany za BiFunction.

computeIfPresent () Wartość zwracana

  • zwraca nową wartość skojarzoną z określonym kluczem
  • zwraca, nulljeśli żadna wartość nie jest skojarzona z kluczem

Uwaga : Jeśli wyniki funkcji remappingFunction null, to mapowanie dla określonego klucza jest usuwane.

Przykład 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); ) )

Wynik

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Cena butów po VAT: 220 Zaktualizowana HashMap: (Pant = 150, Bag = 300, Shoes = 220))

W powyższym przykładzie utworzyliśmy hashmap o nazwie price. Zwróć uwagę na wyrażenie,

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

Tutaj,

  • (klucz, wartość) -> wartość + wartość * 10/100 to wyrażenie lambda. Oblicza nową wartość Shoes i zwraca ją. Aby dowiedzieć się więcej o wyrażeniu lambda, odwiedź stronę Wyrażenia Lambda w języku Java.
  • price.computeIfPresent () kojarzy nową wartość zwróconą przez wyrażenie lambda z mapowaniem dla Shoes. Jest to możliwe tylko dlatego, że Buty są już odwzorowane na wartość w tablicy mieszania.

W tym przypadku wyrażenie lambda działa jako funkcja remapowania. I wymaga dwóch parametrów.

Uwaga : nie możemy użyć tej computeIfPresent()metody, jeśli klucza nie ma w tablicy.

rekomendowane lektury

  • HashMap compute () - oblicza wartość dla określonego klucza
  • HashMap computeIfAbsent () - oblicza wartość, jeśli określony klucz nie jest zamapowany na żadną wartość
  • Java HashMap merge () - wykonuje to samo zadanie co compute()

Interesujące artykuły...