De Java HashMap computeIfPresent () - methode berekent een nieuwe waarde en koppelt deze aan de opgegeven sleutel als de sleutel al aanwezig is in de hashmap.
De syntaxis van de computeIfPresent()
methode is:
hashmap.computeIfPresent(K key, BiFunction remappingFunction)
Hier is hashmap een object van de HashMap
klasse.
computeIfPresent () Parameters
De computeIfPresent()
methode heeft 2 parameters nodig:
- key - sleutel waarmee de berekende waarde moet worden geassocieerd
- remappingFunction - functie die de nieuwe waarde voor de opgegeven sleutel berekent
Opmerking : De remappingFunction kan twee argumenten hebben. Daarom beschouwd als BiFunction.
computeIfPresent () Retourwaarde
- geeft de nieuwe waarde terug die is gekoppeld aan de opgegeven sleutel
- geeft terug
null
als er geen waarde is gekoppeld aan de sleutel
Opmerking : als remappingFunction resultaten oplevert null
, wordt de toewijzing voor de opgegeven sleutel verwijderd.
Voorbeeld 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); ) )
Uitvoer
HashMap: (Broek = 150, Tas = 300, Schoenen = 200) Prijs van schoenen na btw: 220 Bijgewerkte HashMap: (Broek = 150, Tas = 300, Schoenen = 220))
In het bovenstaande voorbeeld hebben we een hashmap gemaakt met de naam prijzen. Let op de uitdrukking,
prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)
Hier,
- (sleutel, waarde) -> waarde + waarde * 10/100 is een lambda-uitdrukking. Het berekent de nieuwe waarde van Shoes en geeft deze terug. Bezoek Java Lambda Expressions voor meer informatie over de lambda-expressie.
- Prices.computeIfPresent () koppelt de nieuwe waarde die wordt geretourneerd door lambda-expressie aan de mapping voor Shoes. Het is alleen mogelijk omdat Shoes al is toegewezen aan een waarde in de hashmap.
Hier fungeert de lambda-expressie als functie voor opnieuw toewijzen. En er zijn twee parameters voor nodig.
Opmerking : we kunnen de computeIfPresent()
methode niet gebruiken als de sleutel niet aanwezig is in de hashmap.
Aanbevolen literatuur
- HashMap compute () - berekent de waarde voor de opgegeven sleutel
- HashMap computeIfAbsent () - berekent de waarde als de opgegeven sleutel niet is toegewezen aan een waarde
- Java HashMap merge () - voert dezelfde taak uit als
compute()