Metoda Java HashMap computeIfPresent () vypočítá novou hodnotu a přidruží ji k určenému klíči, pokud je klíč již v hashmapě.
Syntaxe computeIfPresent()
metody je:
hashmap.computeIfPresent(K key, BiFunction remappingFunction)
Zde je hashmap objekt HashMap
třídy.
computeIfPresent () parametry
computeIfPresent()
Metoda trvá 2 parametry:
- klíč - klíč, se kterým má být vypočítaná hodnota spojena
- remappingFunction - funkce, která vypočítá novou hodnotu pro zadaný klíč
Poznámka : Funkce remappingFunction může trvat dva argumenty. Proto se považuje za BiFunction.
návratová hodnota computeIfPresent ()
- vrátí novou hodnotu přidruženou k zadanému klíči
- vrátí,
null
pokud s klíčem není spojena žádná hodnota
Poznámka : Pokud výsledky remappingFunction null
, pak se odebere mapování pro zadaný klíč .
Pří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ýstup
HashMap: (kalhoty = 150, taška = 300, boty = 200) Cena obuvi po DPH: 220 Aktualizovaná HashMap: (kalhoty = 150, taška = 300, boty = 220))
Ve výše uvedeném příkladu jsme vytvořili hashmapu s názvem ceny. Všimněte si výrazu,
prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)
Tady,
- (klíč, hodnota) -> hodnota + hodnota * 10/100 je výraz lambda. Vypočítá novou hodnotu boty a vrátí ji. Další informace o výrazu lambda najdete na Java Lambda Expressions.
- prices.computeIfPresent () přidruží novou hodnotu vrácenou výrazem lambda k mapování pro boty. Je to možné jen proto, že boty jsou již namapovány na hodnotu v hashmapě.
Zde výraz lambda funguje jako funkce přemapování. A to vyžaduje dva parametry.
Poznámka : computeIfPresent()
Metodu nemůžeme použít, pokud klíč není v hashmapě.
Doporučené čtení
- HashMap compute () - vypočítá hodnotu pro zadaný klíč
- HashMap computeIfAbsent () - vypočítá hodnotu, pokud zadaný klíč není namapován na žádnou hodnotu
- Java HashMap merge () - provádí stejný úkol jako
compute()