Java HashMap computeIfPresent ()

Java HashMap computeIfPresent () -metoden beräknar ett nytt värde och associerar det med den angivna nyckeln om nyckeln redan finns i hashmap.

Syntaxen för computeIfPresent()metoden är:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Här är hashmap ett objekt i HashMapklassen.

computeIfPresent () Parametrar

Den computeIfPresent()metod tar 2 parametrar:

  • nyckel - nyckel som det beräknade värdet ska associeras med
  • remappingFunction - funktion som beräknar det nya värdet för den angivna nyckeln

Obs! RemappingFunction kan ta två argument. Därför betraktas som BiFunction.

computeIfPresent () Returvärde

  • returnerar det nya värdet som är associerat med den angivna nyckeln
  • returnerar nullom inget värde är associerat med nyckeln

Obs : Om resultat av remappingFunction tas bort tas nullmappningen för den angivna nyckeln bort.

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

Produktion

 HashMap: (Pant = 150, Bag = 300, Shoes = 200) Pris på skor efter moms: 220 Uppdaterat HashMap: (Pant = 150, Bag = 300, Shoes = 220))

I exemplet ovan har vi skapat en hashmap med namnet priser. Lägg märke till uttrycket,

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

Här,

  • (nyckel, värde) -> värde + värde * 10/100 är ett lambdauttryck. Det beräknar det nya värdet av skor och returnerar det. För att lära dig mer om lambdauttrycket, besök Java Lambda Expressions.
  • prices.computeIfPresent () kopplar det nya värdet som returneras av lambdauttryck till kartläggningen för skor. Det är bara möjligt eftersom skor redan är mappade till ett värde i hashmap.

Här fungerar lambdauttrycket som remapping-funktion. Och det tar två parametrar.

Obs! Vi kan inte använda computeIfPresent()metoden om nyckeln inte finns i hashmap.

Rekommenderad läsning

  • HashMap beräkna () - beräknar värdet för den angivna nyckeln
  • HashMap computeIfAbsent () - beräknar värdet om den angivna nyckeln inte mappas till något värde
  • Java HashMap merge () - utför samma uppgift som compute()

Intressanta artiklar...