Јава ХасхМап цомпутеИфАбсент ()

Метода Јава ХасхМап цомпутеИфАбсент () израчунава нову вредност и повезује је са наведеним кључем ако кључ није повезан са било којом вредношћу у хешмапи.

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

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Овде је хасхмап објекат HashMapкласе.

Параметри цомпутеИфАбсент ()

computeIfAbsent()Метод узима 2 параметра:

  • кеи - кључ са којим треба израчунати израчунату вредност
  • ремаппингФунцтион - функција која израчунава нову вредност за наведени кључ

Напомена : Функција поновног мапирања не може узети два аргумента.

цомпутеИфАбсент () Повратна вредност

  • враћа нову или стару вредност повезану са наведеним кључем
  • враћа nullако ниједна вредност није повезана са кључем

Напомена : Ако резултати ремаппингФунцтион резултирају null, тада се мапирање за наведени кључ уклања.

Пример 1: Јава ХасхМап цомпутеИфАбсент ()

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

Оутпут

 ХасхМап: (панталона = 150, торба = 300, ципеле = 200) Цена мајице: 280 Ажурирано ХасхМап: (панталона = 150, кошуља = 280, торба = 300, ципеле = 200)

У горњем примеру смо креирали хеш-мапу названу цене. Примети израз,

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

Ево,

  • тастер -> 280 је ламбда израз. Враћа вредност 280. Да бисте сазнали више о ламбда изразу, посетите Јава Ламбда Екпрессионс.
  • прицес.цомпутеИфАбсент () придружује нову вредност враћену ламбда изразом мапирању за Схирт. То је могуће само зато што Схирт већ није мапиран ни у једну вредност у хасхмапу.

Пример 2: цомпутеИфАбсент () ако је кључ већ присутан

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

Оутпут

 ХасхМап: (Пант = 150, торба = 300, ципеле = 180) Цена ципела: 180 Ажурирано ХасхМап: (Пант = 150, торба = 300, ципеле = 180)

У горњем примеру, мапирање за Ципеле већ је присутно у хеш-мапи. Дакле, computeIfAbsent()метода не израчунава нову вредност за Ципеле.

Препоручено читање

  • ХасхМап цомпуте () - израчунава вредност за наведени кључ
  • ХасхМап цомпутеИфПресент () - израчунава вредност ако је наведени кључ већ мапиран у вредност
  • Јава ХасхМап мерге () - извршава исти задатак као compute()

Занимљиви Чланци...