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 HashMap
klassen.
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,
null
hvis 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()