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 HashMap
klassen.
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
null
om inget värde är associerat med nyckeln
Obs : Om resultat av remappingFunction tas bort tas null
mappningen 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()