Java HashMap computeIfPresent ()

Die Java HashMap-Methode computeIfPresent () berechnet einen neuen Wert und ordnet ihn dem angegebenen Schlüssel zu, wenn der Schlüssel bereits in der Hashmap vorhanden ist.

Die Syntax der computeIfPresent()Methode lautet:

 hashmap.computeIfPresent(K key, BiFunction remappingFunction)

Hier ist Hashmap ein Objekt der HashMapKlasse.

computeIfPresent () -Parameter

Die computeIfPresent()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 remappingFunction kann zwei Argumente annehmen. Daher als BiFunction betrachtet.

computeIfPresent () Rückgabewert

  • Gibt den neuen 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 computeIfPresent ()

 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); // recompute the value of Shoes with 10% VAT int shoesPrice = prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100); System.out.println("Price of Shoes after VAT: " + shoesPrice); // print updated HashMap System.out.println("Updated HashMap: " + prices); ) )

Ausgabe

 HashMap: (Hose = 150, Tasche = 300, Schuhe = 200) Preis der Schuhe nach Mehrwertsteuer: 220 Aktualisierte HashMap: (Hose = 150, Tasche = 300, Schuhe = 220))

Im obigen Beispiel haben wir eine Hashmap mit dem Namen Preise erstellt. Beachten Sie den Ausdruck,

 prices.computeIfPresent("Shoes", (key, value) -> value + value * 10/100)

Hier,

  • (Schlüssel, Wert) -> Wert + Wert * 10/100 ist ein Lambda-Ausdruck. Es berechnet den neuen Wert von Shoes und gibt ihn zurück. Um mehr über den Lambda-Ausdruck zu erfahren, besuchen Sie Java Lambda Expressions.
  • Preise.computeIfPresent () ordnet den neuen Wert, der vom Lambda-Ausdruck zurückgegeben wird, der Zuordnung für Schuhe zu. Dies ist nur möglich, weil Schuhe bereits einem Wert in der Hashmap zugeordnet sind.

Hier fungiert der Lambda-Ausdruck als Remapping-Funktion. Und es werden zwei Parameter benötigt.

Hinweis : Wir können die computeIfPresent()Methode nicht verwenden , wenn der Schlüssel nicht in der Hashmap vorhanden ist.

Literatur-Empfehlungen

  • HashMap compute () - berechnet den Wert für den angegebenen Schlüssel
  • HashMap computeIfAbsent () - berechnet den Wert, wenn der angegebene Schlüssel keinem Wert zugeordnet ist
  • Java HashMap merge () - führt dieselbe Aufgabe aus wie compute()

Interessante Beiträge...