Die Java HashMap-Methode computeIfAbsent () berechnet einen neuen Wert und ordnet ihn dem angegebenen Schlüssel zu, wenn der Schlüssel keinem Wert in der Hashmap zugeordnet ist.
Die Syntax der computeIfAbsent()
Methode lautet:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Hier ist Hashmap ein Objekt der HashMap
Klasse.
computeIfAbsent () Parameter
Die computeIfAbsent()
Methode akzeptiert 2 Parameter:
- Schlüssel - Schlüssel, dem der berechnete Wert zugeordnet werden soll
- remappingFunction - Funktion, die den neuen Wert für den angegebenen Schlüssel berechnet
Hinweis : Die Neuzuordnungsfunktion kann nicht zwei Argumente annehmen.
computeIfAbsent () Rückgabewert
- Gibt den neuen oder alten Wert zurück, der dem angegebenen Schlüssel zugeordnet ist
- Gibt zurück,
null
wenn dem Schlüssel kein Wert zugeordnet ist
Hinweis : Wenn remappingFunction resultiert null
, wird die Zuordnung für den angegebenen Schlüssel entfernt.
Beispiel 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); ) )
Ausgabe
HashMap: (Hose = 150, Tasche = 300, Schuhe = 200) Preis des Shirts: 280 Aktualisierte HashMap: (Hose = 150, Shirt = 280, Tasche = 300, Schuhe = 200)
Im obigen Beispiel haben wir eine Hashmap mit dem Namen Preise erstellt. Beachten Sie den Ausdruck,
prices.computeIfAbsent("Shirt", key -> 280)
Hier,
- key -> 280 ist ein Lambda-Ausdruck. Der Wert 280 wird zurückgegeben. Weitere Informationen zum Lambda-Ausdruck finden Sie unter Java Lambda-Ausdrücke.
- Preise.computeIfAbsent () ordnet den neuen Wert, der vom Lambda-Ausdruck zurückgegeben wird, der Zuordnung für Shirt zu. Dies ist nur möglich, weil Shirt bereits keinem Wert in der Hashmap zugeordnet ist.
Beispiel 2: computeIfAbsent (), wenn der Schlüssel bereits vorhanden ist
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); ) )
Ausgabe
HashMap: (Hose = 150, Tasche = 300, Schuhe = 180) Preis der Schuhe: 180 Aktualisierte HashMap: (Hose = 150, Tasche = 300, Schuhe = 180)
Im obigen Beispiel ist die Zuordnung für Schuhe bereits in der Hashmap vorhanden. Daher computeIfAbsent()
berechnet die Methode den neuen Wert für Schuhe nicht.
Literatur-Empfehlungen
- HashMap compute () - berechnet den Wert für den angegebenen Schlüssel
- HashMap computeIfPresent () - berechnet den Wert, wenn der angegebene Schlüssel bereits einem Wert zugeordnet ist
- Java HashMap merge () - führt dieselbe Aufgabe aus wie
compute()