Java HashMap computeIfAbsent ()

Java HashMap computeIfAbsent () -menetelmä laskee uuden arvon ja yhdistää sen määritettyyn avaimeen, jos avainta ei ole liitetty mihinkään hashmap-arvoon.

Menetelmän syntaksi computeIfAbsent()on:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Tässä hashmap on HashMapluokan kohde.

computeIfAbsent () -parametrit

computeIfAbsent()Menetelmä kestää 2 parametrit:

  • avain - avain, johon laskettu arvo liitetään
  • remappingFunction - toiminto, joka laskee määritetyn avaimen uuden arvon

Huomautus : Uudelleenmuodostustoiminto ei voi sisältää kahta argumenttia.

computeIfAbsent () palautusarvo

  • palauttaa määritettyyn avaimeen liittyvän uuden tai vanhan arvon
  • palauttaa, nulljos avaimeen ei liity arvoa

Huomaa : Jos remappingFunction johtaa null, määritetyn avaimen kartoitus poistetaan.

Esimerkki 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); ) )

Tuotos

 HashMap: (housut = 150, laukku = 300, kengät = 200) paidan hinta: 280 päivitetty HashMap: (housut = 150, paita = 280, laukku = 300, kengät = 200)

Yllä olevassa esimerkissä olemme luoneet hashmap-nimisen hinnan. Huomaa ilmaisu,

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

Tässä,

  • avain -> 280 on lambda-lauseke. Se palauttaa arvon 280. Lisätietoja lambda-lausekkeesta on Java Lambda -lausekkeissa.
  • prices.computeIfAbsent () yhdistää lambda-lausekkeen palauttaman uuden arvon paidan kartoitukseen. Se on mahdollista vain siksi, että paita ei ole jo määritetty mihinkään hashmap-arvoon.

Esimerkki 2: computeIfAbsent (), jos avain on jo läsnä

 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); ) )

Tuotos

 HashMap: (Housut = 150, Laukku = 300, Kengät = 180) Kenkien hinta: 180 Päivitetty HashMap: (Housut = 150, Laukut = 300, Kengät = 180)

Yllä olevassa esimerkissä kenkien kartoitus on jo läsnä hashmapissa. Siten computeIfAbsent()menetelmä ei laske uusi arvo kengät.

Suositeltava lukeminen

  • HashMap compute () - laskee määritetyn avaimen arvon
  • HashMap computeIfPresent () - laskee arvon, jos määritetty avain on jo yhdistetty arvoon
  • Java HashMap merge () - suorittaa saman tehtävän kuin compute()

Mielenkiintoisia artikkeleita...