Sobes.tech
Middle

Was ist der Unterschied zwischen den Methoden put und compute?

sobes.tech KI

Antwort von AI

put(key, value) ordnet einfach value key zu, wobei der vorhandene Wert ersetzt wird, falls der Schlüssel bereits vorhanden ist.

compute(key, remappingFunction) berechnet einen neuen Wert für key unter Verwendung der bereitgestellten Funktion remappingFunction. Die Funktion nimmt den aktuellen Schlüssel und seinen aktuellen Wert (oder null, wenn der Schlüssel nicht existiert) und gibt einen neuen Wert zurück, der mit dem Schlüssel verknüpft wird. Wenn die Funktion null zurückgibt, wird der Eintrag gelöscht.

Hauptunterschiede:

  • Umgang mit fehlenden Schlüsseln: put fügt einen neuen Wert ein. compute kann den vorherigen Wert (auch null) verwenden, um einen neuen zu berechnen.
  • Abhängigkeit vom vorherigen Wert: put setzt den Wert unabhängig vom vorherigen. compute verwendet explizit den vorherigen Wert in der Berechnungsfunktion.
  • Löschen von Einträgen: put(key, null) löscht den Eintrag. compute löscht den Eintrag, wenn die Berechnungsfunktion null zurückgibt.

Anwendungsbeispiel:

// Verwendung von put
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // Ersetzt 1 durch 2

// Verwendung von compute zum Inkrementieren eines Zählers
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana wird 1
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana wird 2
countsCompute.compute("cherry", (key, value) -> null); // Entfernt cherry, falls vorhanden