Java HashMap computeIfAbsent ()

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

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

Interessante Beiträge...