Sobes.tech
Middle

Mi a különbség a put és a compute módszerek között?

sobes.tech MI

Válasz az MI-től

put(key, value) egyszerűen hozzárendeli a value-t a key-hez, felülírva a meglévő értéket, ha a kulcs már létezik.

compute(key, remappingFunction) új értéket számít ki a key-hez a megadott remappingFunction segítségével. A funkció megkapja az aktuális kulcsot és annak jelenlegi értékét (vagy null, ha a kulcs nem létezik), és egy új értéket ad vissza, amelyet a kulcshoz társítanak. Ha a funkció null-t ad vissza, a bejegyzés törlésre kerül.

Fő különbségek:

  • Hiányzó kulcsok kezelése: put új értéket ad hozzá. compute használhatja a korábbi értéket (még null-t is) az új kiszámításához.
  • Előző értéktől való függés: put az értéket függetlenül az előzőtől állítja be. compute kifejezetten az előző értéket használja a számítási funkcióban.
  • Bejegyzések törlése: put(key, null) törli a bejegyzést. compute törli a bejegyzést, ha a számítási funkció null-t ad vissza.

Használati példa:

// put használata
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // 1-et felülírja 2-re

// Számláló növelése compute segítségével
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana 1 lesz
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana 2 lesz
countsCompute.compute("cherry", (key, value) -> null); // törli a cherry-t, ha létezett