Java -voogud algajatele: sissejuhatus Java -voogude kasutamisse

Java -voogud algajatele: sissejuhatus Java -voogude kasutamisse

Java 8 voog võimaldab arendajatel koguda täpset teavet suurest kogust, kasutades eelmääratud toiminguid.





Enne Java 8 väljaandmist seostati Java -s sõna „voog” automaatselt I/O -ga. Kuid Java 8 tutvustas voogu, mida võib nimetada arvutustoimingute kogumiks, mis on kokku aheldatud nn voo torujuhtmeks.





See artikkel tutvustab teile Java 8 vooge ja näitab, kuidas need võivad teie projektides kasulikud olla.





Mis on voog?

Voo on Java -liides, mis võtab allika, teostab konkreetsete andmete ekstraheerimiseks toimingute komplekti ja seejärel esitab need andmed rakendusele kasutamiseks. Põhimõtteliselt võimaldab see üldiste andmete kogumist eraldada spetsialiseeritud andmeid.

Kuidas voog töötab

Oja torujuhe algab alati allikast. Allika tüüp sõltub andmete tüübist, millega tegelete, kuid kaks populaarsemat neist on massiivid ja kogud.



Kogu muutmiseks esialgseks vooks peate lisama oja () funktsiooni allikale. See asetab allika voolutorusse, kus tehakse mitu erinevat vahetoimingut (nt filter () ja sorteerima () ) saab seda opereerida.

Kui kõik vajalikud vahetoimingud on tehtud, saate juurutada terminali toimingu (nt igaühele() ), mis toodab allikast varem ekstraheeritud andmeid.





Elu ilma ojadeta

Java 8 ilmus 2014. aastal, kuid enne seda oli Java -arendajatel vaja üldandmete kogumist veel spetsiifilisi andmeid välja võtta.

kuidas juhtida lauda kaabliga

Oletame, et teil on juhuslike tähtede loend, mis on kombineeritud juhuslike numbritega, et moodustada kordumatud stringiväärtused, kuid soovite ainult neid väärtusi, mis algavad tähega C ja soovite tulemuse järjestada kasvavas järjekorras. Nii saate need andmed ilma voogudeta välja võtta.





Seotud: Mida peate teadma stringi kasutamise kohta Java -s

Väärtuste filtreerimine ja sortimine ilma voogudeta


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));
}
}

Samuti peate massiivi loendi deklareerima ja initsialiseerima, olenemata sellest, kas kasutate voogusid või mõnda muud ekstraheerimismeetodit. Mida te ei peaks voogude kasutamisel tegema, on deklareerida nõutud väärtuste hoidmiseks uus muutuja ega luua ülaltoodud näites ülejäänud viis pluss koodirida.

Seotud: Kuidas Java -massiivides toiminguid luua ja teha

Ülaltoodud kood annab konsoolis järgmise väljundi:


C11
C12
C13
C14
C15
C16

Elu voogudega

Programmeerimisel tähendab tõhusus sama tulemuse saamist oluliselt väiksema koodiga. See on täpselt see, mida voo torujuhe programmeerija jaoks teeb. Nii et kui järgmine kord keegi küsib: miks on oluline oma projektis voogusid kasutada? Lihtsamalt öeldes: ojad toetavad tõhusat programmeerimist.

Jätkates ülaltoodud näitega, muudab voogude sisseviimine kogu programmi nii.

Väärtuste filtreerimine ja sorteerimine voo näitel


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);
}
}

Ülaltoodud kood näitab, kui võimas on voo liides. See võtab juhuslike massiiviväärtuste loendi ja teisendab selle vooks, kasutades oja () funktsiooni. Seejärel vähendatakse voogu massiivide loendiks, mis sisaldab nõutavaid väärtusi (mis on kõik väärtused, mis algavad C ), kasutades filter () funktsiooni.

Nagu näete ülaltoodud näites, on C väärtused on massiiviloendis juhuslikult paigutatud. Kui kavatsete voo printida selles etapis, siis väärtus C15 trükitaks kõigepealt. Seetõttu on sorteerima () funktsiooni tutvustatakse voo torujuhtmele, et uus massiiv järjestada üles kasvavas järjekorras.

Oja torujuhtme viimane funktsioon on a igaühele() funktsiooni. See on terminalifunktsioon, mida kasutatakse voolujuhtme peatamiseks ja mis annab konsoolis järgmised tulemused:


C11
C12
C13
C14
C15
C16

Vaheoperatsioonide voog

Olemas on ulatuslik vahetoimingute loend, mida saab kasutada voolujuhtmes.

Oja torujuhe algab alati ühest allikast ja a oja () funktsiooni ja lõpeb alati ühe terminali toiminguga (kuigi valida on mitme erineva vahel.) Nende kahe jaotise vahel on aga kuue vahetoimingu loend, mida saate kasutada.

Ülaltoodud näites kasutatakse ainult kahte neist vahetoimingutest --- filter () ja sorteerima () . Vaheoperatsioon, mille valite, sõltub ülesannetest, mida soovite täita.

Kui mõni ülaltoodud massiiviloendis C -ga algavatest väärtustest oleks väiketähtedega ja me teeksime nendega samu vahetoiminguid, saaksime järgmise tulemuse.

Filtreerimis- ja sorteerimistoimingud väiketähtedega Näide


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);
}
}

Ülaltoodud kood annab konsoolis järgmised väärtused:


C11
C12
C14
C15

Ainus probleem ülaltoodud väljundiga on see, et see ei esinda täpselt kõiki C väärtused meie massiivi loendis. Hea viis selle väikese vea parandamiseks on voolu torujuhtmele teise vaheoperatsiooni juurutamine; seda toimingut tuntakse kui kaart () funktsiooni.

Kaardifunktsiooni näite kasutamine


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 kaart () funktsioon muudab objekti ühest olekust teise; meie ülaltoodud näites teisendab see kõik massiivi loendi väiketähed suurtähtedeks.

Asetamine kaart () funktsiooni vahetult enne filter () funktsioon otsib kõik väärtused, mis algavad C massiivi loendist.

Ülaltoodud kood annab konsoolis järgmise tulemuse, mis edukalt esindab kõiki C väärtused massiivi loendis.


C11
C12
C13
C14
C15
C16

Ülejäänud kolm vahetoimingut, mida saate oma rakendustes kasutada, on järgmised:

  • piiluma ()
  • piir ()
  • vahele jätma()

Java 8 Streams hõlbustab tõhusa koodi loomist

Java 8 voogude abil saate ühe koodiridaga suurest allikast ekstra spetsiifilisi ja asjakohaseid andmeid hankida. Niikaua kui lisate algustähe oja () funktsiooni ja terminalioperaatori abil saate kasutada mis tahes vahetoimingute kombinatsiooni, mis tagab teie eesmärgi jaoks sobiva väljundi.

kuidas sünkroonida xbox 1 kontrollerit

Kui te ei tea, milline koodirida on meie sees filter () funktsioon; seda tuntakse kui 'lambda väljendit'. Lambda väljendid on veel üks Java 8 kasutusele võetud funktsioon ja sellel on palju tükke, mis võivad teile kasulikud olla.

Jaga Jaga Piiksuma E -post Kiire sissejuhatus Java 8 lambdasse

Kui olete Java programmeerija ja soovite rohkem teada saada Java 8 lambdade kohta, siis selles artiklis vaatleme lähemalt lambda süntaksit ja kasutamist.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Java
  • Kodeerimise õpetused
Autori kohta Kadeisha Kean(Avaldatud 21 artiklit)

Kadeisha Kean on täispinu tarkvaraarendaja ja tehniline/tehnoloogiline kirjutaja. Tal on selge võime lihtsustada mõnda kõige keerukamat tehnoloogilist kontseptsiooni; materjali tootmine, millest igale tehnoloogia algajale on lihtne aru saada. Ta on kirglik kirjutamise, huvitava tarkvara arendamise ja maailmas reisimise vastu (läbi dokumentaalfilmide).

Veel Kadeisha Keanilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin