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 HashMap
razreda.
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()