Java HashMap-beregningIfAbsent ()

Java HashMap computeIfAbsent () -metoden beregner en ny værdi og knytter den til den angivne nøgle, hvis nøglen ikke er knyttet til nogen værdi i hashmap.

Metodens syntaks computeIfAbsent()er:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Her er hashmap et objekt i HashMapklassen.

computeIfAbsent () Parametre

Den computeIfAbsent()metode tager 2 parametre:

  • nøgle - nøgle, som den beregnede værdi skal tilknyttes
  • remappingFunction - funktion, der beregner den nye værdi for den angivne nøgle

Bemærk : Remapping-funktionen kan ikke tage to argumenter.

computeIfAbsent () Returværdi

  • returnerer den nye eller gamle værdi, der er knyttet til den angivne nøgle
  • returnerer, nullhvis der ikke er nogen værdi tilknyttet nøglen

Bemærk : Hvis der vises en remappingFunction null, fjernes kortlægningen for den angivne nøgle .

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

Produktion

 HashMap: (Pant = 150, Taske = 300, Sko = 200) Pris på shirt: 280 Opdateret HashMap: (Pant = 150, Shirt = 280, Taske = 300, Sko = 200)

I ovenstående eksempel har vi oprettet en hashmap med priserne. Bemærk udtrykket,

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

Her,

  • nøgle -> 280 er et lambda-udtryk. Den returnerer værdien 280. Hvis du vil lære mere om lambda-udtrykket, skal du besøge Java Lambda Expressions.
  • prices.computeIfAbsent () knytter den nye værdi, der returneres af lambda-udtryk, til kortlægningen for Shirt. Det er kun muligt, fordi Shirt allerede ikke er kortlagt til nogen værdi i hashmap.

Eksempel 2: computeIfAbsent () hvis nøglen allerede er til stede

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

Produktion

 HashMap: (Pant = 150, Taske = 300, Sko = 180) Pris på sko: 180 Opdateret HashMap: (Pant = 150, Taske = 300, Sko = 180)

I ovenstående eksempel er kortlægningen for Sko allerede til stede i hashmap. Derfor computeIfAbsent()beregner metoden ikke den nye værdi for sko.

Anbefalet læsning

  • HashMap-beregning () - beregner værdien for den angivne nøgle
  • HashMap computeIfPresent () - beregner værdien, hvis den angivne nøgle allerede er tilknyttet en værdi
  • Java HashMap fusionere () - udfører den samme opgave som compute()

Interessante artikler...