Java HashMap computeIfAbsent()-Methode
Die computeIfAbsent()-Methode berechnet den Wert für den angegebenen Schlüssel in der hashMap neu; existiert der Schlüssel nicht, wird er zur hashMap hinzugefügt.
Die Syntax von computeIfAbsent() ist:
hashmap.computeIfAbsent(K key, Function remappingFunction)
Hinweis:hashmap ist ein Objekt der Klasse HashMap.
Parameterdetails:
- key - der Schlüssel
- remappingFunction - die Remapping-Funktion, mit der der Wert neu berechnet wird
Rückgabewert
Wenn der dem Schlüssel entsprechende Wert nicht existiert, wird der von remappingFunction neu berechnete Wert als Wert für diesen Schlüssel übernommen; andernfalls wird der Wert zurückgegeben.
Beispiel
Das folgende Beispiel demonstriert die Verwendung der computeIfAbsent()-Methode:
Beispiel
class Main {
public static void main(String[] args) {
// Eine HashMap erstellen
HashMap<String, Integer> prices = new HashMap<>();
// Mapping-Einträge zur HashMap hinzufügen
prices.put("Shoes", 200);
prices.put("Bag", 300);
prices.put("Pant", 150);
System.out.println("HashMap: " + prices);
// Wert für Shirt berechnen
int shirtPrice = prices.computeIfAbsent("Shirt", key -> 280);
System.out.println("Price of Shirt: " + shirtPrice);
// Aktualisierte HashMap ausgeben
System.out.println("Aktualisierte HashMap: " + prices);
}
}
Die Ausgabe des obigen Programms ist:
HashMap: {Pant=150, Bag=300, Shoes=200}
Price of Shirt: 280
Updated HashMap: {Pant=150, Shirt=280, Bag=300, Shoes=200}
Im obigen Beispiel haben wir eine HashMap namens prices erstellt.
Beachten Sie den Ausdruck:
prices.computeIfAbsent("Shirt", key -> 280)
Im Code haben wir eine anonyme Funktion verwendet, einen Lambda-Ausdruck.key-> 280Als Remapping-Funktion verbindet prices.computeIfAbsent() den von dem Lambda-Ausdruck zurückgegebenen neuen Wert mit Shirt.
Da Shirt in der HashMap nicht existiert, wird ein neues Schlüssel/Wert-Paar hinzugefügt.
Um mehr über Lambda-Ausdrücke zu erfahren, besuchen SieJava-Lambda-Ausdrücke。
Fall, wenn der Schlüssel bereits existiert:
Beispiel
class Main {
public static void main(String[] args) {
// Eine HashMap erstellen
HashMap<String, Integer> prices = new HashMap<>();
// Mapping-Beziehungen zur HashMap hinzufügen
prices.put("Shoes", 180);
prices.put("Bag", 300);
prices.put("Pant", 150);
System.out.println("HashMap: " + prices);
// Die Zuordnung für Shoes ist bereits vorhanden
// Für Shoes wird kein neuer Wert berechnet
int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280);
System.out.println("Price of Shoes: " + shoePrice);
// Aktualisierte HashMap ausgeben
System.out.println("Aktualisierte HashMap: " + prices);
}
}
Die Ausgabe des obigen Programms ist:
HashMap: {Pant=150, Bag=300, Shoes=180}
Price of Shoes: 180
Updated HashMap: {Pant=150, Bag=300, Shoes=180}Im obigen Beispiel ist die Zuordnung für Shoes bereits in der HashMap vorhanden, sodass kein neuer Wert für Shoes berechnet wird.
Andere Erweiterungen
Java HashMap