Sobes.tech
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: put pievieno jaunu vērtību. compute var izmantot iepriekšējo vērtību (pat null), lai aprēķinātu jaunu.
  • Atkarība no iepriekšējās vērtības: put nosaka vērtību neatkarīgi no iepriekšējās. compute skaidri izmanto iepriekšējo vērtību aprēķina funkcijā.
  • Ierakstu dzēšana: put(key, null) dzēš ierakstu. compute dzēš 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