Java HashMap computeIfPresent ()

Metoda Java HashMap computeIfPresent () calculează o nouă valoare și o asociază cu cheia specificată dacă cheia este deja prezentă în hashmap.

Sintaxa computeIfPresent()metodei este:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Aici, hashmap este un obiect al HashMapclasei.

parametrii computeIfPresent ()

computeIfPresent()Metoda ia 2 parametri:

  • cheie - cheie cu care trebuie asociată valoarea calculată
  • remappingFunction - funcție care calculează noua valoare pentru cheia specificată

Notă : Funcția remapping poate lua două argumente. Prin urmare, considerat ca BiFunction.

computeIfPresent () Valoare returnată

  • returnează noua valoare asociată cheii specificate
  • returnează nulldacă nu există nici o valoare asociată cu cheia

Notă : Dacă rezultă nullfuncția remappingFunction , atunci maparea pentru cheia specificată este eliminată.

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

Ieșire

 HashMap: (Pant = 150, Bag = 300, Pantofi = 200) Prețul pantofilor după TVA: 220 HashMap actualizat: (Pant = 150, Bag = 300, Pantofi = 220))

În exemplul de mai sus, am creat un hashmap denumit prețuri. Observați expresia,

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

Aici,

  • (cheie, valoare) -> valoare + valoare * 10/100 este o expresie lambda. Calculează noua valoare a încălțămintei și o returnează. Pentru a afla mai multe despre expresia lambda, vizitați Java Lambda Expressions.
  • prices.computeIfPresent () asociază noua valoare returnată de expresia lambda la maparea pentru încălțăminte. Este posibil doar deoarece Shoes este deja mapat la o valoare din hashmap.

Aici, expresia lambda acționează ca funcție de remapare. Și, este nevoie de doi parametri.

Notă : Nu putem folosi computeIfPresent()metoda dacă cheia nu este prezentă în hashmap.

Lectură recomandată

  • HashMap compute () - calculează valoarea pentru cheia specificată
  • HashMap computeIfAbsent () - calculează valoarea dacă cheia specificată nu este mapată la nicio valoare
  • Java HashMap merge () - efectuează aceeași sarcină ca și compute()

Articole interesante...