Java HashMap computeIfPresent ()

Metoda Java HashMap computeIfPresent () izračunava novu vrijednost i povezuje je s navedenim ključem ako je ključ već prisutan u hashmapi.

Sintaksa computeIfPresent()metode je:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Ovdje je hashmap objekt HashMapklase.

Parametri computeIfPresent ()

computeIfPresent()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 remappingFunction može imati dva argumenta. Stoga se smatra BiFunctionom.

computeIfPresent () Povratna vrijednost

  • vraća novu 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 computeIfPresent ()

 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); // recompute the value of Shoes with 10% VAT int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Izlaz

 HashMap: (Pant = 150, torba = 300, cipele = 200) Cijena cipela nakon PDV-a: 220 Ažurirano HashMap: (Pant = 150, torba = 300, cipele = 220))

U gornjem primjeru stvorili smo hashmapu s nazivom cijene. Primijetite izraz,

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Ovdje,

  • (ključ, vrijednost) -> vrijednost + vrijednost * 10/100 je lambda izraz. Izračunava novu vrijednost Shoes i vraća je. Da biste saznali više o lambda izrazu, posjetite Java Lambda Expressions.
  • prices.computeIfPresent () pridružuje novu vrijednost vraćenu lambda izrazom mapiranju za Cipele. To je moguće samo zato što je Shoes već mapiran na vrijednost u hashmapi.

Ovdje lambda izraz djeluje kao funkcija preslikavanja. Potrebna su dva parametra.

Napomena : Ne možemo koristiti computeIfPresent()metodu ako ključ nije prisutan u hashmapi.

Preporučena literatura

  • HashMap compute () - izračunava vrijednost za navedeni ključ
  • HashMap computeIfAbsent () - izračunava vrijednost ako navedeni ključ nije preslikan u bilo koju vrijednost
  • Java HashMap merge () - izvodi isti zadatak kao compute()

Zanimljivi članci...