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 HashMap
triedy.
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,
null
ak 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()