Java HashMap computeIfAbsent ()

Методът Java HashMap computeIfAbsent () изчислява нова стойност и я свързва с посочения ключ, ако ключът не е свързан с никаква стойност в hashmap.

Синтаксисът на computeIfAbsent()метода е:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Тук hashmap е обект на HashMapкласа.

Параметри на computeIfAbsent ()

В computeIfAbsent()метода отнема 2 параметри:

  • ключ - ключ, с който трябва да се свърже изчислената стойност
  • remappingFunction - функция, която изчислява новата стойност за посочения ключ

Забележка : Функцията за пренасочване не може да приема два аргумента.

computeIfAbsent () Върната стойност

  • връща новата или старата стойност, свързана с посочения ключ
  • връща, nullако няма стойност, свързана с ключ

Забележка : Ако резултатите от remappingFunction са резултат null, тогава преобразуването за посочения ключ се премахва.

Пример 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); ) )

Изход

 HashMap: (Pant = 150, чанта = 300, обувки = 200) Цена на ризата: 280 Актуализирана HashMap: (Pant = 150, риза = 280, чанта = 300, обувки = 200)

В горния пример създадохме хеш-карта с имена цени. Забележете израза,

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

Тук,

  • ключ -> 280 е ламбда израз. Той връща стойността 280. За да научите повече за ламбда израза, посетете Java Lambda Expressions.
  • prices.computeIfAbsent () свързва новата стойност, върната от ламбда израза, към картографирането за Shirt. Възможно е само защото Shirt вече не е картографиран на никаква стойност в hashmap.

Пример 2: 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", 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); ) )

Изход

 HashMap: (Pant = 150, чанта = 300, обувки = 180) Цена на обувките: 180 Актуализирана HashMap: (Pant = 150, чанта = 300, обувки = 180)

В горния пример картографирането за Обувки вече присъства в хеш-картата. Следователно computeIfAbsent()методът не изчислява новата стойност за обувки.

Препоръчително четене

  • HashMap compute () - изчислява стойността за посочения ключ
  • HashMap computeIfPresent () - изчислява стойността, ако посоченият ключ вече е съотнесен към стойност
  • Java HashMap merge () - изпълнява същата задача като compute()

Интересни статии...