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 HashMap
klasse.
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
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 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()