Metoda Java HashMap computeIfAbsent () izračunava novu vrijednost i povezuje je s navedenim ključem ako ključ nije povezan s bilo kojom vrijednošću u hashmapi.
Sintaksa computeIfAbsent()
metode je:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Ovdje je hashmap objekt HashMap
klase.
parametri computeIfAbsent ()
computeIfAbsent()
Postupak traje 2 parametara:
- key - ključ s kojim treba izračunati izračunatu vrijednost
- remappingFunction - funkcija koja izračunava novu vrijednost za navedeni ključ
Napomena : Funkcija ponovnog mapiranja ne može uzeti dva argumenta.
computeIfAbsent () Povratna vrijednost
- vraća novu ili staru vrijednost povezanu s navedenim ključem
- vraća
null
ako nijedna vrijednost nije pridružena ključu
Napomena : Ako rezultati remappingFunction rezultiraju null
, tada se mapiranje za navedeni ključ uklanja.
Primjer 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); ) )
Izlaz
HashMap: (Pant = 150, torba = 300, cipele = 200) Cijena majice: 280 Ažurirano HashMap: (Pant = 150, košulja = 280, torba = 300, cipele = 200)
U gornjem primjeru stvorili smo hashmapu s nazivom cijene. Primijetite izraz,
prices.computeIfAbsent("Shirt", key -> 280)
Ovdje,
- tipka -> 280 je lambda izraz. Vraća vrijednost 280. Da biste saznali više o lambda izrazu, posjetite Java Lambda Expressions.
- prices.computeIfAbsent () pridružuje novu vrijednost vraćenu lambda izrazom mapiranju za Shirt. Moguće je samo zato što košulja već nije preslikana na bilo koju vrijednost u hashmapi.
Primjer 2: computeIfAbsent () ako je ključ već prisutan
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); ) )
Izlaz
HashMap: (Pant = 150, torba = 300, cipele = 180) Cijena cipela: 180 Ažurirano HashMap: (Pant = 150, torba = 300, cipele = 180)
U gornjem primjeru mapiranje za Cipele već je prisutno u hashmapi. Stoga computeIfAbsent()
metoda ne izračunava novu vrijednost za Cipele.
Preporučena literatura
- HashMap compute () - izračunava vrijednost za navedeni ključ
- HashMap computeIfPresent () - izračunava vrijednost ako je navedeni ključ već mapiran u vrijednost
- Java HashMap merge () - izvodi isti zadatak kao
compute()