Java HashMap computeIfAbsent ()

Metoda Java HashMap computeIfAbsent () izračuna novo vrednost in jo poveže z določenim ključem, če ključ ni povezan z nobeno vrednostjo v hashmapu.

Sintaksa computeIfAbsent()metode je:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Tu je hashmap predmet HashMaprazreda.

Parametri computeIfAbsent ()

computeIfAbsent()Postopek traja 2 parametrov:

  • key - ključ, s katerim bo povezana izračunana vrednost
  • remappingFunction - funkcija, ki izračuna novo vrednost za navedeni ključ

Opomba : Funkcija ponovnega preslikavanja ne more sprejeti dveh argumentov.

computeIfAbsent () Vrnjena vrednost

  • vrne novo ali staro vrednost, povezano z navedenim ključem
  • vrne, nullče s ključem ni povezana nobena vrednost

Opomba : Če je rezultat remappingFunction rezultat null, se preslikava za navedeni ključ odstrani.

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

Izhod

 HashMap: (Hlače = 150, Torba = 300, Čevlji = 200) Cena majice: 280 Posodobljeno HashMap: (Hlače = 150, Srajca = 280, Torba = 300, Čevlji = 200)

V zgornjem primeru smo ustvarili hashmap z imenom cene. Upoštevajte izraz,

 prices.computeIfAbsent("Shirt", key -> 280)

Tukaj,

  • key -> 280 je lambda izraz. Vrne vrednost 280. Če želite izvedeti več o lambda izrazu, obiščite Java Lambda Expressions.
  • prices.computeIfAbsent () poveže novo vrednost, ki jo vrne lambda izraz, na preslikavo za Shirt. Možno je le, ker majica že ni preslikana na nobeno vrednost v hashmapu.

Primer 2: computeIfAbsent (), če je ključ že prisoten

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

Izhod

 HashMap: (Hlače = 150, Torba = 300, Čevlji = 180) Cena čevljev: 180 Posodobljeno HashMap: (Hlače = 150, Torba = 300, Čevlji = 180)

V zgornjem primeru je preslikava za Čevlje že prisotna v hashmapu. Zato computeIfAbsent()metoda ne izračuna nove vrednosti za Čevlje.

Priporočeno branje

  • HashMap compute () - izračuna vrednost za navedeni ključ
  • HashMap computeIfPresent () - izračuna vrednost, če je navedeni ključ že preslikan na vrednost
  • Java HashMap merge () - izvaja isto nalogo kot compute()

Zanimive Članki...