Reduce Sum ir izplatīta problēma, ar ko saskaras gan daudzi izstrādātāji, gan programmēšanas entuziasti. Tam ir nepieciešamas programmēšanas koncepciju pamatzināšanas. Lai gan Java piedāvā dažādas metodes šīs problēmas risināšanai, dažiem tas joprojām var izrādīties mulsinošs uzdevums. Šajā rakstā mēs iedziļināsimies vienā no efektīvākajiem Java problēmas samazināšanas risinājumiem, soli pa solim izskaidrojot katru koda daļu, tādējādi padarot to viegli saprotamu pat iesācējiem.
Summas samazināšanas problēma
Summas samazināšanas problēma būtībā ir saistīta ar skaitļu summēšanu skaitļu plūsmā. Problēmai var būt dažādas variācijas. Tā varētu būt masīva elementu summēšana, LinkedList elementi vai straumes elementu summēšana vairāku pavedienu vidē, kurā tiek izmantota funkcija "stream.reduce()". Tas izmanto lambda izteiksmes un funkcionālās saskarnes, kas ir būtiskas Java 8 un jaunākas versijas iezīmes.
Java risinājums
Java nodrošina virkni bibliotēku un funkciju, lai viegli apstrādātu un atrisinātu problēmu. Mēs izmantotu straumes API, kas tika ieviesta Java 8. Jo īpaši metode "reduce()", kas apvieno straumes elementus, lai iegūtu vienu kopsavilkuma rezultātu.
Šeit ir Java koda paraugs, lai to izdarītu.
public int sumOfArray(Integer[] numbers) {
return Arrays.stream(numbers)
.reduce(0, Integer::sum);
}
Kodeksa soli pa solim skaidrojums
Iepriekš minētais kods apzīmē metodi, kas kā argumentu izmanto veselu skaitļu masīvu un atgriež šo veselo skaitļu summu.
- Pirmkārt, `Arrays.stream(numbers)` pārvērš masīvu par straumi.
- Pēc tam šajā straumē tiek izsaukta metode "reduce()". Šai metodei ir nepieciešami divi parametri: summas sākotnējā vērtība un summas aprēķināšanai izmantojamā metode.
- Sākotnējā vērtība šajā gadījumā ir iestatīta kā “0”, un izmantotā metode ir “Integer::sum”. "Integer::sum" ir atsauce uz statisko metodi "summa" veselo skaitļu klasē. Šī metode atgriež savu argumentu summu. Tas tiek nodots kā metodes atsauce samazināšanas metodē.
- Funkcija “reduce()” pēc tam veic summas darbību katram straumes elementam, un pēc tam summa tiek atgriezta kā funkcijas rezultāts.
Java bibliotēkas un līdzīgas funkcijas
Java piedāvā plašu bibliotēku klāstu, kas var palīdzēt manipulēt ar straumēm un darboties ar tām. Līdzīgas funkcijas “samazināt” cita starpā ietver “savākt”, “skaitīt”, “atbilst”, “atrast”, “atkārtot”, pamatojoties uz to, kāda darbība ir jāveic straumē.
Izmantojot šo ilustrāciju, mēs varam redzēt, ka Java nodrošina jaudīgus un elastīgus rīkus sarežģītu problēmu risināšanai, pat piemēram, summas samazināšanas problēmai. Tas liecina par valodas daudzpusību un robustumu.