Obliczenia Java HashMap ()

Metoda Java HashMap compute () oblicza nową wartość i kojarzy ją z określonym kluczem w tablicy hashmap.

Składnia compute()metody to:

 hashmap.compute(K key, BiFunction remappingFunction)

Tutaj hashmap jest obiektem tej HashMapklasy.

compute () Parametry

compute()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.

compute () Wartość zwracana

  • zwraca nową wartość skojarzoną z 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: HashMap compute (), aby wstawić nową wartość

 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); ) )

Wynik

 HashMap: (Spodnie = 150, Torba = 300, Buty = 200) Obniżona cena butów: 180 Zaktualizowana mapa HashMap: (Spodnie = 150, Torba = 300, Buty = 180

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

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

Tutaj,

  • (klucz, wartość) -> wartość - wartość * 10/100 - Jest to wyrażenie lambda. Zmniejsza starą wartość butów o 10% i zwraca ją. Aby dowiedzieć się więcej o wyrażeniu lambda, odwiedź stronę Wyrażenia Lambda w języku Java.
  • price.compute () - wiąże nową wartość zwróconą przez wyrażenie lambda z mapowaniem dla Shoes.

Użyliśmy wyrażenia lambda jako funkcji remapującej, która pobiera dwa parametry.

Uwaga : zgodnie z oficjalną dokumentacją języka Java metoda merge () HashMap jest prostsza niż compute()metoda.

rekomendowane lektury

  • HashMap computeIfAbsent () - oblicza wartość, jeśli określony klucz nie jest zamapowany na żadną wartość
  • HashMap computeIfPresent () - oblicza wartość, jeśli podany klucz jest już zamapowany na wartość

Interesujące artykuły...