Java HashMap computeIfAbsent ()

Metóda Java HashMap computeIfAbsent () počíta novú hodnotu a spája ju so zadaným kľúčom, ak kľúč nie je spojený so žiadnou hodnotou v hashmape.

Syntax computeIfAbsent()metódy je:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Tu je hashmap objektom HashMaptriedy.

parametre computeIfAbsent ()

computeIfAbsent()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 premapovania nemôže trvať dva argumenty.

návratová hodnota computeIfAbsent ()

  • vráti novú alebo starú hodnotu spojenú so zadaným kľúčom
  • vráti, nullak 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 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ýkon

 HashMap: (nohavice = 150, taška = 300, topánky = 200) Cena košele: 280 Aktualizovaná HashMap: (nohavice = 150, košeľa = 280, taška = 300, topánky = 200)

Vo vyššie uvedenom príklade sme vytvorili hashmapu s názvom ceny. Všimnite si výraz,

 prices.computeIfAbsent("Shirt", key -> 280)

Tu,

  • key -> 280 je lambda výraz. Vráti hodnotu 280. Ak sa chcete dozvedieť viac informácií o výraze lambda, navštívte výraz Java Lambda Expressions.
  • prices.computeIfAbsent () priraďuje novú hodnotu vrátenú výrazom lambda k mapovaniu pre Shirt. Je to možné len preto, že Shirt už nie je namapovaná na žiadnu hodnotu v hashmape.

Príklad 2: computeIfAbsent (), ak je kľúč už prítomný

 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ýkon

 HashMap: (nohavice = 150, taška = 300, topánky = 180) Cena topánok: 180 Aktualizovaná HashMap: (nohavice = 150, taška = 300, topánky = 180)

Vo vyššie uvedenom príklade je mapovanie pre topánky už v hashmape. Preto táto computeIfAbsent()metóda nevypočíta novú hodnotu pre topánky.

Odporúčané čítanie

  • HashMap compute () - počíta hodnotu pre zadaný kľúč
  • HashMap computeIfPresent () - vypočítava hodnotu, ak je zadaný kľúč už namapovaný na hodnotu
  • Java HashMap merge () - vykonáva rovnakú úlohu ako compute()

Zaujímavé články...