Tokovi Java 8 omogočajo razvijalcem, da iz nabora vnaprej določenih operacij pridobijo natančne podatke iz velike zbirke.

Pred izdajo Jave 8 bi bila uporaba izraza "tok" v Javi samodejno povezana z V / I. Vendar pa je Java 8 predstavila tok, ki ga lahko imenujemo nabor računskih korakov, ki so povezani v tako imenovanem "cevovodu toka".

Ta članek vam bo predstavil tokove Java 8 in prikazal, kako so lahko koristni pri vaših projektih.

Kaj je tok?

Tok je vmesnik Java, ki vzame vir, izvede nabor operacij za pridobivanje določenih podatkov in nato te podatke posreduje aplikaciji za uporabo. V bistvu vam omogoča pridobivanje specializiranih podatkov iz zbirke splošnih podatkov.

Kako delujejo tokovi

Pretočni cevovod se vedno začne z virom. Vrsta vira je odvisna od vrste podatkov, s katerimi imate opravka, toda dva bolj priljubljena so polja in zbirke.

Če želite zbirko pretvoriti v začetni tok, boste morali dodati tok () funkcijo do vira. To bo vir postavilo v cevovod toka, kjer je več različnih vmesnih operacij (kot npr filter () in razvrsti ()) jo lahko operirajo.

instagram viewer

Ko so izvedene vse zahtevane vmesne operacije, lahko uvedete operacijo terminala (kot je za vsakogar()), ki bo ustvaril predhodno pridobljene podatke iz vira.

Življenje brez potokov

Java 8 je bila izdana leta 2014, vendar so pred tem razvijalci Java še vedno morali pridobiti posebne podatke iz zbirke splošnih podatkov.

Recimo, da imate seznam naključnih znakov, ki se kombinirajo z naključnimi številkami in tvorijo edinstvene vrednosti nizov, vendar želite le vrednosti, ki se začnejo z znakom "C", rezultat pa želite razvrstiti po naraščajoči naročilo. Tako bi izvlekli te podatke brez tokov.

Sorodno: Kaj morate vedeti o uporabi nizov v Javi

Primer filtriranja in razvrščanja vrednosti brez tokov


uvoz java.util. ArrayList;
uvoz java.util. Nizi;
uvoz java.util. Seznam;
javni razred Main {
public static void main (String [] args) {
// razglasimo in inicializiramo seznam matrike
Seznam 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"
);
// razglasimo, da bo seznam matrik shranil potrebne vrednosti
Seznam requiredValues ​​= new ArrayList <> ();
// pridobivanje zahtevanih vrednosti in njihovo shranjevanje v reqquiredValues
randomValues.forEach (vrednost -> {
if (value.startsWith ("C")) {
requiredValues.add (vrednost);
}
});
// razvrsti zahtevane vrednosti v naraščajočem vrstnem redu
requiredValues.sort ((vrednost niza1, vrednost niza2) -> vrednost1.compareTo (vrednost2));
// natisnemo vsako vrednost v konzolo
requiredValues.forEach ((vrednost niza) -> System.out.println (vrednost));
}
}

Prav tako boste morali prijaviti in inicializirati seznam nizov, ne glede na to, ali uporabljate tokove ali kak drug način ekstrakcije. Če bi uporabljali tokove, vam ne bi bilo treba storiti, če prijavite novo spremenljivko, ki bo vsebovala zahtevane vrednosti, niti ne ustvarite ostalih pet vrstic kode v zgornjem primeru.

Sorodno: Kako ustvariti in izvajati operacije z nizi v Javi

Zgornja koda daje v konzoli naslednji izhod:


C11
C12
C13
C14
C15
C16

Življenje s potoki

Pri programiranju učinkovitost govori o enakem rezultatu z bistveno manj kode. To je točno tisto, kar cevovod toka naredi za programerja. Torej, ko naslednjič nekdo vpraša: "zakaj je pomembno, da v svojem projektu uporabljamo tokove?" Preprosto povedano: "tokovi podpirajo učinkovito programiranje."

Nadaljujemo z zgornjim primerom, tako uvajanje tokov spremeni celoten program.

Filtriranje in razvrščanje vrednosti s primerom toka


uvoz java.util. Nizi;
uvoz java.util. Seznam;
javni razred Main {
public static void main (String [] args) {
// razglasimo in inicializiramo seznam matrike
Seznam 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"
);
// pridobi samo vrednosti, ki se začnejo s C, jih razvrsti in natisne v konzolo.
randomValues.stream (). filter (value-> value.startsWith ("C")). sorted (). forEach (System.out:: println);
}
}

Zgornja koda prikazuje, kako močan je vmesnik toka. Vzame seznam naključnih vrednosti matrike in ga s pomočjo datoteke pretvori v tok tok () funkcijo. Tok se nato zmanjša na seznam matrik, ki vsebuje zahtevane vrednosti (kar so vse vrednosti, ki se začnejo z C), uporabljati filter () funkcijo.

Kot lahko vidite v zgornjem primeru, C vrednosti so naključno razporejene na seznamu nizov. Če bi tok tiskali na tej točki v cevovodu, vrednost C15 bi bil najprej natisnjen. Zato je razvrsti () je v cevovod toka uvedena funkcija za preurejanje novega polja v naraščajočem vrstnem redu.

Končna funkcija v cevovodu toka je za vsakogar() funkcijo. To je terminalna funkcija, ki se uporablja za zaustavitev cevovoda toka in v konzoli ustvari naslednje rezultate:


C11
C12
C13
C14
C15
C16

Obstaja obsežen seznam vmesnih operacij, ki jih je mogoče uporabiti v cevovodu toka.

Pretočni cevovod se vedno začne z enim samim virom in a tok () funkcija in se vedno konča z enim samim terminalom (čeprav obstaja več različnih izberite med njimi.) Toda med tema dvema poglavjema je seznam šestih vmesnih operacij, ki jih lahko uporaba.

V našem zgornjem primeru sta uporabljeni le dve od teh vmesnih operacijfilter () in razvrsti (). Vmesna operacija, ki jo izberete, je odvisna od nalog, ki jih želite izvesti.

Če bi bila katera od vrednosti, ki se na zgornjem seznamu nizov začnejo s »C, napisana z malimi črkami in bi z njimi izvedli enake vmesne operacije, bi dobili naslednji rezultat.

Primer izvajanja operacij filtriranja in razvrščanja na malih črkah


uvoz java.util. Nizi;
uvoz java.util. Seznam;
javni razred Main {
public static void main (String [] args) {
// razglasimo in inicializiramo seznam matrike
Seznam 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"
);
// pridobi samo vrednosti, ki se začnejo s C, jih razvrsti in natisne v konzolo.
randomValues.stream (). filter (value-> value.startsWith ("C")). sorted (). forEach (System.out:: println);
}
}

Zgornja koda bo v konzoli ustvarila naslednje vrednosti:


C11
C12
C14
C15

Edina težava z zgornjim izhodom je, da ne predstavlja natančno vseh vrednosti na našem seznamu nizov. Dober način za odpravo te majhne napake je vpeljava še ene vmesne operacije v cevovod toka; ta operacija je znana kot zemljevid() funkcijo.

Uporaba primera funkcije zemljevida


uvoz java.util. Nizi;
uvoz java.util. Seznam;
javni razred Main {
public static void main (String [] args) {
// razglasimo in inicializiramo seznam matrike
Seznam 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"
);
// pretvori vse male črke v velike,
// pridobi samo vrednosti, ki se začnejo s C, jih razvrsti in natisne v konzolo.
randomValues.stream (). map (String:: toUpperCase) .filter (value-> value.startsWith ("C")). sorted (). forEach (System.out:: println);
}
}

The zemljevid() funkcija pretvori objekt iz enega stanja v drugo; v našem zgornjem primeru pretvori vse male črke na seznamu nizov v velike črke.

Namestitev zemljevid() tik pred filter () funkcija pridobi vse vrednosti, ki se začnejo z C s seznama matrik.

Zgornja koda v konzoli povzroči naslednji rezultat, ki uspešno predstavlja vse datoteke vrednosti na seznamu nizov.


C11
C12
C13
C14
C15
C16

Ostale tri vmesne operacije, ki jih lahko uporabite v svojih aplikacijah, vključujejo:

  • pokukati ()
  • meja ()
  • preskoči ()

Pretoki Java 8 olajšajo ustvarjanje učinkovite kode

Z toku Java 8 lahko iz ene vrstice kode iz velikega vira izvlečete posebne, ustrezne podatke. Dokler vključite začetnico tok () funkcijo in operaterjem terminala lahko uporabite katero koli kombinacijo vmesnih operacij, ki zagotavljajo ustrezne izhode za vaš cilj.

Če se sprašujete o vrstici kode, zaprti v naši filter () funkcija; znan je kot "lambda izraz". Lambda izrazi so še ena funkcija, ki jo uvaja Java 8, in vsebuje veliko gručkov, ki bi se vam morda zdeli koristni.

E-naslov
Kratek uvod v java 8 Lambdas

Če ste programer Java in vas zanima več o lambdah Java 8, si bomo v tem članku podrobneje ogledali sintakso in uporabo lambda.

Preberite Naprej

Sorodne teme
  • Programiranje
  • Java
  • Vadnice za kodiranje
O avtorju
Kadeisha Kean (13 objavljenih člankov)

Kadeisha Kean je razvijalka programske opreme s polnim skladom in pisateljica tehničnih / tehnoloških tehnologij. Ima izrazito sposobnost poenostavitve nekaterih najbolj zapletenih tehnoloških konceptov; izdelujejo materiale, ki jih lahko vsak tehnološki začetnik zlahka razume. Navdušena je nad pisanjem, razvojem zanimive programske opreme in potovanjem po svetu (skozi dokumentarne filme).

Več od Kadeisha Kean

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!

Še en korak…!

Potrdite svoj e-poštni naslov v e-poštnem sporočilu, ki smo vam ga pravkar poslali.

.