Middle
Kāda ir atšķirība starp metodēm put un compute?
sobes.tech AI
Atbilde no AI
put(key, value) vienkārši piesaista value ar key, aizvietojot esošo vērtību, ja atslēga jau pastāv.
compute(key, remappingFunction) aprēķina jaunu vērtību key, izmantojot nodrošināto remappingFunction. Funkcija ņem pašreizējo atslēgu un tās pašreizējo vērtību (vai null, ja atslēga neeksistē) un atgriež jaunu vērtību, kas tiks saistīta ar atslēgu. Ja funkcija atgriež null, ieraksts tiek dzēsts.
Galvenās atšķirības:
- Trūkstošu atslēgu apstrāde:
putpievieno jaunu vērtību.computevar izmantot iepriekšējo vērtību (patnull), lai aprēķinātu jaunu. - Atkarība no iepriekšējās vērtības:
putnosaka vērtību neatkarīgi no iepriekšējās.computeskaidri izmanto iepriekšējo vērtību aprēķina funkcijā. - Ierakstu dzēšana:
put(key, null)dzēš ierakstu.computedzēš ierakstu, ja aprēķina funkcija atgriežnull.
Piemērs lietošanai:
// Izmantojot put
Map<String, Integer> countsPut = new HashMap<>();
countsPut.put("apple", 1);
countsPut.put("apple", 2); // Aizvieto 1 ar 2
// Skaitītāja palielināšana ar compute
Map<String, Integer> countsCompute = new HashMap<>();
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana būs 1
countsCompute.compute("banana", (key, value) -> value == null ? 1 : value + 1); // banana būs 2
countsCompute.compute("cherry", (key, value) -> null); // Dzēš cherry, ja tas bija