Java HashMap computeIfAbsent ()

Java HashMap computeIfAbsent () -metoden beregner en ny verdi og knytter den til den angitte nøkkelen hvis nøkkelen ikke er assosiert med noen verdi i hashmap.

Syntaksen til computeIfAbsent()metoden er:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Her er hashmap et objekt i HashMapklassen.

computeIfAbsent () -parametere

Den computeIfAbsent()metoden tar 2 parametre:

  • nøkkel - nøkkel som den beregnede verdien skal assosieres med
  • remappingFunction - funksjon som beregner den nye verdien for den angitte nøkkelen

Merk : Remapping-funksjonen kan ikke ta to argumenter.

computeIfAbsent () Returverdi

  • returnerer den nye eller gamle verdien som er knyttet til den angitte nøkkelen
  • returnerer nullhvis ingen verdi er knyttet til nøkkelen

Merk : Hvis resultatene av remappingFunction blir fjernet null, blir kartleggingen for den angitte nøkkelen fjernet.

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

Produksjon

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Pris på skjorte: 280 Oppdatert HashMap: (Pant = 150, Shirt = 280, Bag = 300, Shoes = 200)

I eksemplet ovenfor har vi opprettet en hashmap som heter priser. Legg merke til uttrykket,

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

Her,

  • nøkkel -> 280 er et lambdauttrykk. Den returnerer verdien 280. For å lære mer om lambda-uttrykket, besøk Java Lambda Expressions.
  • prices.computeIfAbsent () knytter den nye verdien som returneres av lambda-uttrykk til kartleggingen for Shirt. Det er bare mulig fordi skjorte allerede ikke er kartlagt til noen verdi i hashmap.

Eksempel 2: computeIfAbsent () hvis nøkkelen 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); ) )

Produksjon

 HashMap: (Pant = 150, Bag = 300, Shoes = 180) Pris på Sko: 180 Oppdatert HashMap: (Pant = 150, Bag = 300, Shoes = 180)

I eksemplet ovenfor er kartleggingen for Sko allerede til stede i hashmap. Derfor computeIfAbsent()beregner ikke metoden den nye verdien for sko.

Anbefalt lesing

  • HashMap-beregning () - beregner verdien for den angitte nøkkelen
  • HashMap computeIfPresent () - beregner verdien hvis den angitte nøkkelen allerede er tilordnet en verdi
  • Java HashMap merge () - utfører samme oppgave som compute()

Interessante artikler...