Summa vähendamine on levinud probleem, millega seisavad silmitsi nii paljud arendajad kui ka programmeerimishuvilised. See nõuab programmeerimiskontseptsioonide põhimõistmist. Kuigi Java pakub selle probleemi lahendamiseks mitmesuguseid meetodeid, võib see siiski osutuda mõne jaoks segaseks. Selles artiklis uurime ühte kõige tõhusamat lahendust Java summa vähendamise probleemile, selgitades koodi iga osa samm-sammult, muutes selle hõlpsasti arusaadavaks isegi algajatele.
Summa vähendamise probleem
Summa vähendamise probleem taandub sisuliselt numbrite summeerimisele numbrivoos. Probleemil võib olla erinevaid variatsioone. See võib olla massiivi elementide summeerimine, lingiloendi elemendid või voo elementide summeerimine mitme lõimega keskkonnas, mis kasutab funktsiooni stream.reduce(). See kasutab lambda-avaldisi ja funktsionaalseid liideseid, mis on Java 8 ja uuemate versioonide olulised funktsioonid.
Java lahendus
Java pakub probleemi hõlpsaks käsitlemiseks ja lahendamiseks hulga teeke ja funktsioone. Kasutaksime Java 8-s kasutusele võetud Stream API-t. Eelkõige meetodit "vähendada()", mis ühendab voo elemendid ühe kokkuvõtliku tulemuse saamiseks.
Siin on Java koodi näidis selleks.
public int sumOfArray(Integer[] numbers) { return Arrays.stream(numbers) .reduce(0, Integer::sum); }
Koodeksi samm-sammult selgitus
Ülaltoodud kood esindab meetodit, mis võtab argumendina täisarvude massiivi ja tagastab nende täisarvude summa.
- Esiteks teisendab 'Arrays.stream(numbers)' massiivi vooks.
- Seejärel kutsutakse selles voos välja meetod "reduce()". Sellel meetodil on kaks parameetrit: summa algväärtus ja summa arvutamiseks rakendatav meetod.
- Sel juhul on algväärtuseks seatud "0" ja kasutatav meetod on "Integer::sum". "Integer::sum" on viide staatilisele meetodile "sum" klassis Integer. See meetod tagastab oma argumentide summa. See edastatakse meetodi viitena vähendamise meetodisse.
- Funktsioon "vähendada()" teostab seejärel summaoperatsiooni voo iga elemendiga ja summa tagastatakse seejärel funktsiooni tulemusel.
Java raamatukogud ja sarnased funktsioonid
Java pakub laia valikut teeke, mis aitavad teil voogudega manipuleerida ja nendega töötada. Sarnaste vähendamise funktsioonide hulka kuuluvad muu hulgas funktsioon "koguda", "loendada", "sobitada", "leida", "itereerida" selle põhjal, millist toimingut voos tuleb teha.
Selle illustratsiooni kaudu näeme, et Java pakub võimsaid ja paindlikke tööriistu keeruliste probleemide lahendamiseks, isegi nagu summa vähendamise probleem. See on tunnistus keele mitmekülgsusest ja jõulisusest.