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








