Java HashMap computeIfAbsent ()

Metoda Java HashMap computeIfAbsent () calculează o nouă valoare și o asociază cu cheia specificată dacă cheia nu este asociată cu nicio valoare din hashmap.

Sintaxa computeIfAbsent()metodei este:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Aici, hashmap este un obiect al HashMapclasei.

parametrii computeIfAbsent ()

computeIfAbsent()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 de remapare nu poate lua două argumente.

computeIfAbsent () Valoare returnată

  • returnează valoarea nouă sau veche asociată cu cheia specificată
  • 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 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); ) )

Ieșire

 HashMap: (Pant = 150, Bag = 300, Pantofi = 200) Prețul cămășii: 280 HashMap actualizat: (Pant = 150, Shirt = 280, Bag = 300, Pantofi = 200)

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

 prices.computeIfAbsent("Shirt", key -> 280)

Aici,

  • cheie -> 280 este o expresie lambda. Returnează valoarea 280. Pentru a afla mai multe despre expresia lambda, vizitați Java Lambda Expressions.
  • prices.computeIfAbsent () asociază noua valoare returnată de expresia lambda la maparea pentru Shirt. Este posibil doar deoarece Shirt nu este deja mapat la nicio valoare din hashmap.

Exemplul 2: computeIfAbsent () dacă cheia este deja prezentă

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

Ieșire

 HashMap: (Pant = 150, Bag = 300, Pantofi = 180) Preț pantofi: 180 HashMap actualizat: (Pant = 150, Bag = 300, Pantofi = 180)

În exemplul de mai sus, maparea pentru încălțăminte este deja prezentă în hashmap. Prin urmare, computeIfAbsent()metoda nu calculează noua valoare pentru încălțăminte.

Lectură recomandată

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

Articole interesante...