Java HashMap computeIfPresent ()

Metóda Java HashMap computeIfPresent () počíta novú hodnotu a spája ju so zadaným kľúčom, ak je kľúč už v hashmape.

Syntax computeIfPresent()metódy je:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Tu je hashmap objektom HashMaptriedy.

parametre computeIfPresent ()

computeIfPresent()Metóda trvá 2 parametre:

  • kľúč - kľúč, s ktorým má byť vypočítaná hodnota spojená
  • remappingFunction - funkcia, ktorá počíta novú hodnotu pre zadaný kľúč

Poznámka : Funkcia remappingFunction môže mať dva argumenty. Preto sa považuje za BiFunkciu.

návratová hodnota computeIfPresent ()

  • vráti novú hodnotu spojenú so zadaným kľúčom
  • vráti, nullak s kľúčom nie je spojená žiadna hodnota

Poznámka : Ak bude výsledkom remappingFunction null, mapovanie pre zadaný kľúč sa odstráni.

Príklad 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); ) )

Výkon

 HashMap: (nohavice = 150, taška = 300, topánky = 200) Cena topánok po DPH: 220 Aktualizovaná HashMap: (nohavice = 150, taška = 300, topánky = 220))

Vo vyššie uvedenom príklade sme vytvorili hashmapu s názvom ceny. Všimnite si výraz,

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Tu,

  • (kľúč, hodnota) -> hodnota + hodnota * 10/100 je výraz lambda. Vypočíta novú hodnotu topánky a vráti ju. Ak sa chcete dozvedieť viac informácií o výraze lambda, navštívte Java Lambda Expressions.
  • prices.computeIfPresent () priraďuje novú hodnotu vrátenú výrazom lambda k mapovaniu pre topánky. Je to možné len preto, že topánky sú už namapované na hodnotu v hashmape.

Výraz lambda tu funguje ako funkcia premapovania. A to vyžaduje dva parametre.

Poznámka : computeIfPresent()Metódu nemôžeme použiť, ak kľúč nie je v hashmape.

Odporúčané čítanie

  • HashMap compute () - počíta hodnotu pre zadaný kľúč
  • HashMap computeIfAbsent () - vypočítava hodnotu, ak zadaný kľúč nie je namapovaný na žiadnu hodnotu
  • Java HashMap merge () - vykonáva rovnakú úlohu ako compute()

Zaujímavé články...