Java HashMap computeIfAbsent ()

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 HashMaptří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í, nullpokud 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()

Zajímavé články...