Sobes.tech
Middle

Koja je razlika između metoda put i compute?

sobes.tech АИ

Одговор од АИ

put(key, value) jednostavno povezuje value sa key, zamenjujući postojeću vrednost ako ključ već postoji.

compute(key, remappingFunction) izračunava novu vrednost za key koristeći pruženu funkciju remappingFunction. Funkcija prima trenutni ključ i njegovu trenutnu vrednost (ili null ako ključ ne postoji) i vraća novu vrednost koja će biti povezana sa ključem. Ako funkcija vrati null, zapis se briše.

Glavne razlike:

  • Rukovanje nedostajućim ključevima: put dodaje novu vrednost. compute može koristiti prethodnu vrednost (čak i null) za izračun.
  • Zavisnost od prethodne vrednosti: put postavlja vrednost nezavisno od prethodne. compute eksplicitno koristi prethodnu vrednost u funkciji izračuna.
  • Brisanje zapisa: put(key, null) briše zapis. compute briše zapis ako funkcija izračuna vrati null.

Primer upotrebe:

// Upotreba put
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // Zamenjuje 1 sa 2

// Upotreba compute za inkrementaciju brojača
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana će biti 1
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana će biti 2
countsCompute.compute("cherry", (key, value) -> null); // Briše cherry ako postoji