Java HashMap computeIfPresent ()

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 HashMapklasse.

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 nullals 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()

Interessante artikelen...