Java Streams za začetnike: Uvod v uporabo Streams v Javi

Java Streams za začetnike: Uvod v uporabo Streams v Javi

Tokovi Java 8 razvijalcem omogočajo, da z naborom vnaprej določenih operacij izvlečejo natančne podatke iz velike zbirke.





Pred izdajo Jave 8 bi bila uporaba izraza 'tok' v Javi samodejno povezana z V/I. Vendar je Java 8 uvedla tok, ki ga lahko označimo kot niz računskih korakov, povezanih skupaj v tisto, kar običajno imenujemo 'tok pretoka'.





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





Kaj je tok?

Tok je vmesnik Java, ki vzame vir, izvede niz operacij za pridobivanje določenih podatkov in jih nato uporabi za uporabo. V bistvu vam omogoča pridobivanje specializiranih podatkov iz zbirke posplošenih podatkov.

Kako delujejo tokovi

Plinovod se vedno začne z virom. Vrsta vira je odvisna od vrste podatkov, s katerimi se ukvarjate, dva bolj priljubljena pa sta polja in zbirke.



Če želite zbirko spremeniti v začetni tok, morate dodati datoteko tok () funkcijo do vira. To bo vir postavilo v cevovod toka, kjer bo več različnih vmesnih operacij (npr filter () in razvrsti () ) lahko z njim upravljate.

Ko so izvedene vse potrebne vmesne operacije, lahko uvedete terminalsko operacijo (npr za vsakogar() ), ki bo ustvaril predhodno pridobljene podatke iz vira.





Življenje brez tokov

Java 8 je bila izdana leta 2014, pred tem pa so morali razvijalci Jave še vedno izvleči specializirane podatke iz zbirke splošnih podatkov.

Zvočniki ne delujejo v sistemu Windows 10

Recimo, da imate seznam naključnih znakov, ki so združeni z naključnimi številkami, da tvorijo edinstvene vrednosti niza, vendar želite le vrednosti, ki se začnejo z znakom C, in želite razvrstiti rezultat v naraščajočem vrstnem redu. Tako bi izvlekli te podatke brez tokov.





Povezano: Kaj morate vedeti o uporabi nizov v Javi

Primer filtriranja in razvrščanja vrednosti brez tokov


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List 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'
);
//declare the array list will store needed values
List requiredValues = new ArrayList();
//extracting the required values and storing them in reqquiredValues
randomValues.forEach(value -> {
if(value.startsWith('C')) {
requiredValues.add(value);
}
});
//sort the requiredValues in ascending order
requiredValues.sort((String value1, String value2) -> value1.compareTo(value2));
//print each value to the console
requiredValues.forEach((String value) -> System.out.println(value));
}
}

Prav tako boste morali prijaviti in inicializirati seznam nizov, ne glede na to, ali uporabljate tokove ali kakšen drug način ekstrakcije. Če bi uporabljali tokove, vam ne bi bilo treba storiti, da deklarirate novo spremenljivko, ki vsebuje zahtevane vrednosti, niti ne ustvarite drugih petih vrstic kode v zgornjem primeru.

Povezano: Kako ustvariti in izvesti operacije nad nizi v Javi

Zgornja koda ustvari naslednji izhod v konzoli:


C11
C12
C13
C14
C15
C16

Življenje s tokovi

Pri programiranju učinkovitost govori o istem rezultatu z bistveno manj kode. Točno tokovni tok dela za programerja. Zato se naslednjič nekdo vpraša: zakaj je pomembno, da v svojem projektu uporabljate tokove? Preprosto povedano: tokovi podpirajo učinkovito programiranje.

Če nadaljujemo z zgornjim primerom, tako uvajanje tokov spremeni celoten program.

Filtriranje in razvrščanje vrednosti s primerom toka


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List 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'
);
//retrieves only values that start with C, sort them, and print them to the console.
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 nizov, ki vsebuje zahtevane vrednosti (to 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 natisnili na tej točki v kanalu, je vrednost C15 bi najprej natisnili. Zato je razvrsti () funkcija je uvedena v tok pretoka za preureditev nove matrike v naraščajočem vrstnem redu.

Končna funkcija v toku pretoka je a za vsakogar() funkcijo. To je terminalna funkcija, ki se uporablja za zaustavitev tokovnega kanala in v konzoli daje naslednje rezultate:


C11
C12
C13
C14
C15
C16

Pretočne vmesne operacije

Obstaja obsežen seznam vmesnih operacij, ki jih je mogoče uporabiti pri pretočnem toku.

Pretočni tok se vedno začne z enim samim virom in a tok () funkcijo in se vedno konča z eno samo terminalsko operacijo (čeprav je na izbiro več različnih.) Toda med tema dvema odsekoma je seznam šestih vmesnih operacij, ki jih lahko uporabite.

V našem zgornjem primeru se uporabljata samo dve od teh vmesnih operacij --- filter () in razvrsti () . Vmesna operacija, ki jo izberete, je odvisna od nalog, ki jih želite izvesti.

Če bi bila katera od vrednosti, ki se na našem zgornjem seznamu nizov začnejo s C, in bi na njih izvedli iste vmesne operacije, bi dobili naslednji rezultat.

Izvajanje operacij filtriranja in razvrščanja za male vrednosti Primer


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List 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'
);
//retrieves only values that start with C, sort them, and print them to the console.
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 C vrednosti na našem seznamu nizov. Dober način za odpravo te majhne napake je uvedba drugega vmesnega postopka v cevovod toka; ta operacija je znana kot zemljevid() funkcijo.

Z uporabo primera funkcije zemljevida


import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
//declare and initialize the array list
List 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'
);
//transforms all lower case characters to upper case,
//retrieves only values that start with C, sort them, and print them to the console.
randomValues.stream().map(String::toUpperCase).filter(value->value.startsWith('C')).sorted().forEach(System.out::println);
}
}

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

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

Zgornja koda v konzoli ustvari naslednji rezultat, ki uspešno predstavlja vse datoteke C vrednosti na seznamu matrike.


C11
C12
C13
C14
C15
C16

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

  • pokukati ()
  • limit ()
  • preskoči ()

Pretoki Java 8 olajšajo ustvarjanje učinkovite kode

S tokovi Java 8 lahko izvlečete posebne, pomembne podatke iz velikega vira z eno vrstico kode. Dokler vključite začetno tok () funkcijo in terminalskega operaterja, lahko uporabite katero koli kombinacijo vmesnih operacij, ki zagotavljajo ustrezne rezultate za vaš cilj.

kako skrijem svojo številko mobilnega telefona pred ID klicatelja

Če se sprašujete o vrstici kode, ki je v naši filter () funkcija; znan je kot 'lambda izraz'. Lambda izrazi so še ena funkcija, uvedena z Javo 8, in ima veliko drobcev, ki bi se vam morda zdeli koristni.

Deliti Deliti Cvrkutati E-naslov Kratek uvod v lambde Java 8

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

Preberite Naprej
Sorodne teme
  • Programiranje
  • Java
  • Kodiranje vadnic
O avtorju Kadeisha Kean(21 objavljenih člankov)

Kadeisha Kean je razvijalka programske opreme in tehnična/tehnološka pisateljica. Ima izrazito sposobnost poenostavitve nekaterih najbolj zapletenih tehnoloških konceptov; izdelavo materiala, ki ga lahko vsak tehnološki začetnik zlahka razume. Strastno piše, razvija zanimivo programsko opremo in potuje 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, ocene, brezplačne e -knjige in ekskluzivne ponudbe!

Kliknite tukaj, če se želite naročiti