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 HashMap
klasy.
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,
null
jeś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ść