Middle
Aký je rozdiel medzi metódami put a compute?
sobes.tech AI
Odpoveď od AI
put(key, value) jednoducho priradí value k key, nahradzuje existujúcu hodnotu, ak už kľúč existuje.
compute(key, remappingFunction) vypočíta novú hodnotu pre key pomocou poskytnutej funkcie remappingFunction. Funkcia prijíma aktuálny kľúč a jeho aktuálnu hodnotu (alebo null, ak kľúč neexistuje) a vracia novú hodnotu, ktorá bude spojená s kľúčom. Ak funkcia vráti null, záznam sa odstráni.
Hlavné rozdiely:
- Spracovanie chýbajúcich kľúčov:
putvloží novú hodnotu.computemôže použiť predchádzajúcu hodnotu (ajnull) na výpočet novej. - Závislosť od predchádzajúcej hodnoty:
putnastaví hodnotu nezávisle od predchádzajúcej.computevýslovne používa predchádzajúcu hodnotu vo výpočtovej funkcii. - Odstránenie záznamov:
put(key, null)odstráni záznam.computeodstráni záznam, ak funkcia výpočtu vrátinull.
Príklad použitia:
// Použitie put
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // Nahradí 1 za 2
// Použitie compute na inkrementáciu počítadla
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana bude 1
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana bude 2
countsCompute.compute("cherry", (key, value) -> null); // Odstráni cherry, ak existoval