Sobes.tech
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: put vloží novú hodnotu. compute môže použiť predchádzajúcu hodnotu (aj null) na výpočet novej.
  • Závislosť od predchádzajúcej hodnoty: put nastaví hodnotu nezávisle od predchádzajúcej. compute výslovne používa predchádzajúcu hodnotu vo výpočtovej funkcii.
  • Odstránenie záznamov: put(key, null) odstráni záznam. compute odstráni záznam, ak funkcia výpočtu vráti null.

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