Java HashMap computeIfPresent ()

Методът 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()

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