Metoda Java HashMap computeIfAbsent () oblicza nową wartość i kojarzy ją z określonym kluczem, jeśli klucz nie jest powiązany z żadną wartością w tablicy mieszania.
Składnia computeIfAbsent()
metody to:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Tutaj hashmap jest obiektem tej HashMap
klasy.
computeIfAbsent () Parametry
computeIfAbsent()
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 ponownego mapowania nie może przyjmować dwóch argumentów.
computeIfAbsent () Wartość zwracana
- zwraca nową lub starą wartość skojarzoną z określonym 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 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); ) )
Wynik
HashMap: (Spodnie = 150, Torba = 300, Buty = 200) Cena koszuli: 280 Zaktualizowana HashMap: (Spodnie = 150, Koszula = 280, Torba = 300, Buty = 200)
W powyższym przykładzie utworzyliśmy hashmap o nazwie price. Zwróć uwagę na wyrażenie,
prices.computeIfAbsent("Shirt", key -> 280)
Tutaj,
- klucz -> 280 to wyrażenie lambda. Zwraca wartość 280. Aby dowiedzieć się więcej o wyrażeniu lambda, odwiedź Java Lambda Expressions.
- price.computeIfAbsent () kojarzy nową wartość zwróconą przez wyrażenie lambda z mapowaniem dla Shirt. Jest to możliwe tylko dlatego, że koszula nie jest już przypisana do żadnej wartości w tablicy.
Przykład 2: computeIfAbsent (), jeśli klucz już istnieje
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); ) )
Wynik
HashMap: (Spodnie = 150, Torba = 300, Buty = 180) Cena butów: 180 Zaktualizowana mapa HashMap: (Spodnie = 150, Torba = 300, Buty = 180)
W powyższym przykładzie mapowanie dla butów jest już obecne w hashmap. W związku z tym computeIfAbsent()
metoda nie oblicza nowej wartości dla Shoes.
rekomendowane lektury
- HashMap compute () - oblicza wartość dla określonego klucza
- HashMap computeIfPresent () - oblicza wartość, jeśli podany klucz jest już zamapowany na wartość
- Java HashMap merge () - wykonuje to samo zadanie co
compute()