Методът Java HashMap computeIfPresent () изчислява нова стойност и я свързва с посочения ключ, ако ключът вече присъства в hashmap.
Синтаксисът на computeIfPresent()
метода е:
hashmap.computeIfPresent(K key, BiFunction remappingFunction)
Тук hashmap е обект на HashMap
класа.
Параметри на computeIfPresent ()
В computeIfPresent()
метода отнема 2 параметри:
- ключ - ключ, с който трябва да се свърже изчислената стойност
- remappingFunction - функция, която изчислява новата стойност за посочения ключ
Забележка : Функцията remappingFunction може да отнеме два аргумента. Следователно, считано за BiFunction.
computeIfPresent () Върната стойност
- връща новата стойност, свързана с посочения ключ
- връща,
null
ако няма стойност, свързана с ключ
Забележка : Ако резултатите от remappingFunction са резултат null
, тогава преобразуването за посочения ключ се премахва.
Пример 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); ) )
Изход
HashMap: (Pant = 150, чанта = 300, обувки = 200) Цена на обувките след ДДС: 220 Актуализирана HashMap: (Pant = 150, чанта = 300, обувки = 220))
В горния пример създадохме хеш-карта с имена цени. Забележете израза,
prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)
Тук,
- (ключ, стойност) -> стойност + стойност * 10/100 е ламбда израз. Той изчислява новата стойност на Shoes и я връща. За да научите повече за ламбда израза, посетете Java Lambda Expressions.
- prices.computeIfPresent () свързва новата стойност, върната от ламбда израза, към картографирането за Shoes. Възможно е само защото Shoes вече е картографиран на стойност в hashmap.
Тук ламбда изразът действа като функция за пренасочване. И това отнема два параметъра.
Забележка : Не можем да използваме computeIfPresent()
метода, ако ключът не присъства в хеш-картата.
Препоръчително четене
- HashMap compute () - изчислява стойността за посочения ключ
- HashMap computeIfAbsent () - изчислява стойността, ако посоченият ключ не е съотнесен към никоя стойност
- Java HashMap merge () - изпълнява същата задача като
compute()