Java HashMap computeIfPresent ()

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

Zajímavé články...