Metoda Java HashMap computeIfAbsent () vypočítá novou hodnotu a přidruží ji k určenému klíči, pokud klíč není přidružen k žádné hodnotě v hashmap.
Syntaxe computeIfAbsent()
metody je:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Zde je hashmap objekt HashMap
třídy.
computeIfAbsent () parametry
computeIfAbsent()
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 přemapování nemůže trvat dva argumenty.
návratová hodnota computeIfAbsent ()
- vrátí novou nebo starou 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 computeIfAbsent ()
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); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )
Výstup
HashMap: (kalhoty = 150, taška = 300, boty = 200) Cena košile: 280 Aktualizovaná HashMap: (kalhoty = 150, košile = 280, taška = 300, boty = 200)
Ve výše uvedeném příkladu jsme vytvořili hashmapu s názvem ceny. Všimněte si výrazu,
prices.computeIfAbsent("Shirt", key -> 280)
Tady,
- key -> 280 je lambda výraz. Vrátí hodnotu 280. Další informace o výrazu lambda najdete na Java Lambda Expressions.
- prices.computeIfAbsent () přidruží novou hodnotu vrácenou výrazem lambda k mapování pro Shirt. Je to možné jen proto, že košile již není mapována na žádnou hodnotu v hashmapě.
Příklad 2: computeIfAbsent (), pokud je klíč již přítomen
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", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )
Výstup
HashMap: (kalhoty = 150, taška = 300, boty = 180) Cena bot: 180 aktualizovaná HashMap: (kalhoty = 150, taška = 300, boty = 180)
Ve výše uvedeném příkladu je mapování pro boty již přítomno v hashmapě. Proto computeIfAbsent()
metoda není vypočítat novou hodnotu pro boty.
Doporučené čtení
- HashMap compute () - vypočítá hodnotu pro zadaný klíč
- HashMap computeIfPresent () - vypočítá hodnotu, pokud je zadaný klíč již namapován na hodnotu
- Java HashMap merge () - provádí stejný úkol jako
compute()