Java HashMap computeIfAbsent ()

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

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

Zanimljivi članci...