Метода Јава ХасхМап цомпутеИфАбсент () израчунава нову вредност и повезује је са наведеним кључем ако кључ није повезан са било којом вредношћу у хешмапи.
Синтакса 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()