Java HashMap computeIfPresent ()

Java HashMap computeIfPresent () -metoden beregner en ny verdi og knytter den til den angitte nøkkelen hvis nøkkelen allerede er tilstede i hashmap.

Syntaksen til computeIfPresent()metoden er:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Her er hashmap et objekt i HashMapklassen.

computeIfPresent () Parametere

Den computeIfPresent()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 : RemappingFunction kan ta to argumenter. Derfor betraktet som BiFunction.

computeIfPresent () Returverdi

  • returnerer den nye 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 computeIfPresent ()

 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); // recompute the value of Shoes with 10% VAT int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Produksjon

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Pris på sko etter moms: 220 Oppdatert HashMap: (Pant = 150, Bag = 300, Shoes = 220))

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

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Her,

  • (nøkkel, verdi) -> verdi + verdi * 10/100 er et lambdauttrykk. Den beregner den nye verdien av Sko og returnerer den. For å lære mer om lambdauttrykket, besøk Java Lambda Expressions.
  • prices.computeIfPresent () knytter den nye verdien som returneres av lambda-uttrykk til kartleggingen for Sko. Det er bare mulig fordi Sko allerede er kartlagt til en verdi i hashmap.

Her fungerer lambdauttrykket som remapping-funksjon. Og det tar to parametere.

Merk : Vi kan ikke bruke computeIfPresent()metoden hvis nøkkelen ikke er tilstede i hashmap.

Anbefalt lesing

  • HashMap-beregning () - beregner verdien for den angitte nøkkelen
  • HashMap computeIfAbsent () - beregner verdien hvis den spesifiserte nøkkelen ikke er tilordnet noen verdi
  • Java HashMap merge () - utfører samme oppgave som compute()

Interessante artikler...