Java HashMap computeIfAbsent ()

De Java HashMap computeIfAbsent () - methode berekent een nieuwe waarde en koppelt deze aan de opgegeven sleutel als de sleutel niet is gekoppeld aan een waarde in de hashmap.

De syntaxis van de computeIfAbsent()methode is:

 hashmap.computeIfAbsent(K key, Function remappingFunction)

Hier is hashmap een object van de HashMapklasse.

computeIfAbsent () Parameters

De computeIfAbsent()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 functie voor opnieuw toewijzen kan geen twee argumenten accepteren.

computeIfAbsent () Retourwaarde

  • geeft de nieuwe of oude 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 computeIfAbsent ()

 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); // compute the value of Shirt int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280); System.out.println("Price of Shirt: " + shirtPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Uitvoer

 HashMap: (Broek = 150, Tas = 300, Schoenen = 200) Prijs van shirt: 280 Bijgewerkte HashMap: (Broek = 150, Shirt = 280, Tas = 300, Schoenen = 200)

In het bovenstaande voorbeeld hebben we een hashmap gemaakt met de naam prijzen. Let op de uitdrukking,

 prices.computeIfAbsent("Shirt", key -> 280)

Hier,

  • key -> 280 is een lambda-uitdrukking. Het retourneert de waarde 280. Voor meer informatie over de lambda-expressie, bezoek Java Lambda Expressions.
  • Prices.computeIfAbsent () koppelt de nieuwe waarde die wordt geretourneerd door lambda-expressie aan de toewijzing voor Shirt. Het is alleen mogelijk omdat Shirt al niet aan een waarde in de hashmap is toegewezen.

Voorbeeld 2: computeIfAbsent () als de sleutel al aanwezig is

 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", 180); prices.put("Bag", 300); prices.put("Pant", 150); System.out.println("HashMap: " + prices); // mapping for Shoes is already present // new value for Shoes is not computed int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280); System.out.println("Price of Shoes: " + shoePrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Uitvoer

 HashMap: (Broek = 150, Tas = 300, Schoenen = 180) Prijs van schoenen: 180 Bijgewerkte HashMap: (Broek = 150, Tas = 300, Schoenen = 180)

In het bovenstaande voorbeeld is de mapping voor Shoes al aanwezig in de hashmap. Daarom computeIfAbsent()berekent de methode niet de nieuwe waarde voor schoenen.

Aanbevolen literatuur

  • HashMap compute () - berekent de waarde voor de opgegeven sleutel
  • HashMap computeIfPresent () - berekent de waarde als de opgegeven sleutel al aan een waarde is toegewezen
  • Java HashMap merge () - voert dezelfde taak uit als compute()

Interessante artikelen...