Java HashMap computeIfAbsent ()

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 HashMapklasy.

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, 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 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()

Interesujące artykuły...