Java 8 straumes ļauj izstrādātājiem iegūt precīzus datus no lielas kolekcijas, izmantojot iepriekš noteiktu darbību kopumu.
Pirms Java 8 izlaišanas termina "straume" lietošana Java automātiski tiktu saistīta ar I / O. Tomēr Java 8 ieviesa plūsmu, ko var dēvēt par skaitļošanas soļu kopumu, kas savienots kopā tā sauktajā “plūsmas cauruļvadā”.
Šis raksts jūs iepazīstinās ar Java 8 straumēm un parādīs, kā tās var būt noderīgas jūsu projektos.
Kas ir straume?
Straume ir Java saskarne, kas ņem avotu, veic darbību kopumu, lai iegūtu konkrētus datus, pēc tam nodrošina šos datus lietojumprogrammā. Būtībā tas ļauj iegūt specializētus datus no vispārinātu datu kolekcijas.
Kā darbojas straumes
Plūsmas cauruļvads vienmēr sākas ar avotu. Avota tips ir atkarīgs no datu veida, ar kuru jūs strādājat, taču divi no populārākajiem ir masīvi un kolekcijas.
Lai pārveidotu kolekciju sākotnējā straumē, jums būs jāpievieno straume () avotam. Tādējādi avots tiks ievietots plūsmas cauruļvadā, kur tiks veiktas vairākas atšķirīgas starpposma darbības (piemēram, filtrs () un kārtot ()) var to darbināt.
Pēc visu nepieciešamo starpposma darbību veikšanas jūs varat ieviest termināla darbību (piemēram, katram()), kas iegūs iepriekš iegūtos datus no avota.
Dzīve bez straumēm
Java 8 tika izlaists 2014. gadā, bet pirms tam Java izstrādātājiem joprojām bija nepieciešams iegūt specializētus datus no vispārīgu datu kolekcijas.
Pieņemsim, ka jums ir izlases rakstzīmju saraksts, kas tiek kombinēts ar nejaušiem skaitļiem, lai izveidotu unikālas virknes vērtības, bet vēlaties tikai vērtības, kas sākas ar burtu “C”, un rezultātu vēlaties sakārtot augošā secībā rīkojumu. Tas ir veids, kā jūs iegūtu šos datus bez straumēm.
Saistīts: Kas jums jāzina par virkņu izmantošanu Java
Vērtību filtrēšana un šķirošana bez straumēm
importēt java.util. ArrayList;
importēt java.util. Masīvi;
importēt java.util. Saraksts;
sabiedrības klase Galvenā {
public static void main (String [] args) {
// deklarēt un inicializēt masīvu sarakstu
Saraksts randomValues = Arrays.asList (
"E11", "D12", "A13", "F14", "C15", "A16",
"B11", "B12", "C13", "B14", "B15", "B16",
"F12", "E13", "C11", "C14", "A15", "C16",
"F11", "C12", "D13", "E14", "D15", "D16"
);
// paziņot, ka masīvu sarakstā tiks saglabātas nepieciešamās vērtības
Saraksts requiredValues = new ArrayList <> ();
// nepieciešamo vērtību iegūšana un saglabāšana reqquiredValues
randomValues.forEach (vērtība -> {
ja (vērtība.sākas ar ("C")) {
requiredValues.add (vērtība);
}
});
// kārtojiet nepieciešamāsVērtības augošā secībā
requiredValues.sort ((Virknes vērtība1, Virknes vērtība2) -> vērtība1.salīdzinātTo (vērtība2));
// katru vērtību drukājiet konsolē
requiredValues.forEach ((virknes vērtība) -> System.out.println (vērtība));
}
}
Jums arī jāpaziņo un jāinicializē masīvu saraksts neatkarīgi no tā, vai izmantojat straumes vai kādu citu iegūšanas metodi. Tas, kas jums nav jādara, ja izmantojat straumes, ir deklarēt jaunu mainīgo, lai turētu nepieciešamās vērtības, kā arī izveidot iepriekšējās piemērā pārējās piecas plus rindiņas.
Saistīts: Kā izveidot un veikt operācijas ar masīviem Java
Iepriekš minētais kods konsolē rada šādu izvadi:
C11
C12
C13
C14
C15
C16
Dzīve ar straumēm
Programmēšanā efektivitāte nozīmē to pašu rezultātu ar ievērojami mazāku kodu. Tas ir tieši tas, ko straumēšanas cauruļvads dara programmētājam. Tāpēc nākamreiz, kad kāds jautā: "Kāpēc ir svarīgi savā projektā izmantot straumes?" Vienkārši sakot: “straumes atbalsta efektīvu programmēšanu.”
Turpinot mūsu iepriekš minēto piemēru, straumju ieviešana pārveido visu programmu.
Vērtību filtrēšana un šķirošana ar straumes piemēru
importēt java.util. Masīvi;
importēt java.util. Saraksts;
sabiedrības klase Galvenā {
public static void main (String [] args) {
// deklarēt un inicializēt masīvu sarakstu
Saraksts randomValues = Arrays.asList (
"E11", "D12", "A13", "F14", "C15", "A16",
"B11", "B12", "C13", "B14", "B15", "B16",
"F12", "E13", "C11", "C14", "A15", "C16",
"F11", "C12", "D13", "E14", "D15", "D16"
);
// izgūst tikai vērtības, kas sākas ar C, tos kārto un izdrukā konsolē.
randomValues.stream (). filter (value-> value.startsWith ("C")). sakārtots (). forEach (System.out:: println);
}
}
Iepriekš minētais kods parāda, cik spēcīgs ir straumes interfeiss. Tas ņem izlases masīvu vērtību sarakstu un pārveido to plūsmā, izmantojot straume () funkciju. Pēc tam straume tiek samazināta līdz masīvu sarakstam, kurā ir nepieciešamās vērtības (kas ir visas vērtības, kas sākas ar C), izmantojot filtrs () funkciju.
Kā redzat iepriekšējā piemērā, C vērtības nejauši sakārtotas masīvu sarakstā. Ja drukājat straumi šajā cauruļvada punktā, vērtība C15 vispirms tiktu iespiests. Tāpēc kārtot () funkcija tiek ieviesta plūsmas cauruļvadā, lai pārkārtotu jauno masīvu augošā secībā.
Galīgā funkcija plūsmas cauruļvadā ir a katram() funkciju. Šī ir termināla funkcija, kas tiek izmantota straumes cauruļvada apturēšanai un konsolē rada šādus rezultātus:
C11
C12
C13
C14
C15
C16
Ir plašs to starpoperāciju saraksts, kuras var izmantot plūsmas cauruļvadā.
Plūsmas cauruļvads vienmēr sākas ar vienu avotu un a straume () funkcija un vienmēr beidzas ar vienu termināla darbību (lai gan ir vairāki dažādi izvēlēties starp.) Bet starp šīm divām sadaļām ir saraksts ar sešām starpposma darbībām, kuras varat veikt izmantot.
Mūsu iepriekš minētajā piemērā tiek izmantotas tikai divas no šīm starpoperācijāmfiltrs () un kārtot (). Izvēlētā starpoperācija būs atkarīga no uzdevumiem, kurus vēlaties veikt.
Ja kāda no vērtībām, kas sākas ar “C” mūsu masīvu sarakstā, būtu ar mazajiem burtiem un mēs ar tām veiktu tādas pašas starpposma darbības, mēs iegūtu šādu rezultātu.
Filtrēšanas un šķirošanas darbību veikšana ar mazajiem lielumiem
importēt java.util. Masīvi;
importēt java.util. Saraksts;
sabiedrības klase Galvenā {
public static void main (String [] args) {
// deklarēt un inicializēt masīvu sarakstu
Saraksts randomValues = Arrays.asList (
"E11", "D12", "A13", "F14", "C15", "A16",
"B11", "B12", "c13", "B14", "B15", "B16",
"F12", "E13", "C11", "C14", "A15", "c16",
"F11", "C12", "D13", "E14", "D15", "D16"
);
// izgūst tikai vērtības, kas sākas ar C, tos kārto un izdrukā konsolē.
randomValues.stream (). filter (value-> value.startsWith ("C")). sakārtots (). forEach (System.out:: println);
}
}
Iepriekš minētais kods konsolē radīs šādas vērtības:
C11
C12
C14
C15
Vienīgā problēma ar iepriekš minēto izvadi ir tā, ka tā precīzi neatspoguļo visus C vērtības mūsu masīvu sarakstā. Labs veids, kā novērst šo mazo kļūdu, ir straumēšanas cauruļvadā ieviest vēl vienu starpoperāciju; šī darbība ir pazīstama kā karte () funkciju.
Izmantojot kartes funkciju piemēru
importēt java.util. Masīvi;
importēt java.util. Saraksts;
sabiedrības klase Galvenā {
public static void main (String [] args) {
// deklarēt un inicializēt masīvu sarakstu
Saraksts randomValues = Arrays.asList (
"E11", "D12", "A13", "F14", "C15", "A16",
"B11", "B12", "c13", "B14", "B15", "B16",
"F12", "E13", "C11", "C14", "A15", "c16",
"F11", "C12", "D13", "E14", "D15", "D16"
);
// pārveido visus mazos burtus ar lielajiem burtiem,
// izgūst tikai vērtības, kas sākas ar C, tos kārto un izdrukā konsolē.
randomValues.stream (). map (String:: toUpperCase) .filter (value-> value.startsWith ("C")). sakārtots (). forEach (System.out:: println);
}
}
The karte () funkcija pārveido objektu no viena stāvokļa uz citu; mūsu piemērā iepriekš tas pārveido visas mazās rakstzīmes masīvu sarakstā par lielajiem burtiem.
Ievietošana karte () funkcija tieši pirms filtrs () funkcija izgūst visas vērtības, kas sākas ar C no masīvu saraksta.
Iepriekš redzamais kods konsolē rada šādu rezultātu, veiksmīgi pārstāvot visus C vērtības masīvu sarakstā.
C11
C12
C13
C14
C15
C16
Pārējās trīs starpoperācijas, kuras varat izmantot savās lietojumprogrammās, ir šādas:
- palūrēt ()
- ierobežojums ()
- izlaist ()
Java 8 straumes atvieglo efektīva koda izveidi
Izmantojot Java 8 straumes, ar vienu koda rindiņu varat iegūt īpaši specifiskus, atbilstošus datus no liela avota. Kamēr jūs iekļaujat sākotnējo straume () funkciju un termināla operatoru, jūs varat izmantot jebkuru starpposma darbību kombināciju, kas nodrošina atbilstošu izeju jūsu mērķim.
Ja jūs domājat par koda rindiņu, kas pievienota mūsu filtrs () funkcija; tas ir pazīstams kā "lambda izteiksme". Lambda izteiksmes ir vēl viena iezīme, kas ieviesta ar Java 8, un tajā ir daudz tīrradņu, kas jums varētu šķist noderīgi.
Ja esat Java programmētājs un jūs vēlaties uzzināt vairāk par Java 8 lambdas, šajā rakstā mēs sīkāk aplūkosim lambda sintaksi un lietojumu.
Lasiet Tālāk
- Programmēšana
- Java
- Kodēšanas konsultācijas
Kadeisha Kean ir pilnas programmatūras izstrādātājs un tehnisko / tehnoloģiju rakstnieks. Viņai ir īpaša spēja vienkāršot dažus no vissarežģītākajiem tehnoloģiskajiem jēdzieniem; ražo materiālu, kuru viegli var saprast jebkurš iesācējs tehnoloģija. Viņa aizrauj rakstīšanu, interesantas programmatūras izstrādi un ceļošanu pa pasauli (izmantojot dokumentālās filmas).
Abonējiet mūsu biļetenu
Pievienojieties mūsu informatīvajam izdevumam par tehniskiem padomiem, atsauksmēm, bezmaksas e-grāmatām un ekskluzīviem piedāvājumiem!
Vēl viens solis !!!
Lūdzu, apstipriniet savu e-pasta adresi e-pastā, kuru tikko nosūtījām.