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:
putdodaje novu vrednost.computemože koristiti prethodnu vrednost (čak inull) za izračun. - Zavisnost od prethodne vrednosti:
putpostavlja vrednost nezavisno od prethodne.computeeksplicitno koristi prethodnu vrednost u funkciji izračuna. - Brisanje zapisa:
put(key, null)briše zapis.computebriše zapis ako funkcija izračuna vratinull.
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