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