Stream API, zavedené v Java 8, sa používa na spracovanie kolekcií objektov. Prúd v jazyku Java je sekvencia objektov, ktoré podporujú rôzne metódy, ktoré možno zreťaziť na dosiahnutie požadovaného výsledku.
Použitie streamu v jazyku Java
Nižšie sú uvedené spôsoby použitia streamu v jazyku Java:
- Stream API je spôsob vyjadrenia a spracovania kolekcií objektov.
- Umožnite nám vykonávať operácie ako filtrovanie, mapovanie, zmenšovanie a triedenie.
Ako vytvoriť Java Stream?
Vytvorenie Java Streamu je jedným z najzákladnejších krokov pred zvážením funkcií Java Streamu. Nižšie je uvedená syntax, ako deklarovať Java Stream.
Syntax
Stream stream;>
Tu je T buď trieda, objekt alebo typ údajov v závislosti od deklarácie.
Funkcie Java Stream
Funkcie streamu Java sú uvedené nižšie:
- Prúd nie je dátová štruktúra, ale berie vstup z kolekcií, polí alebo I/O kanálov.
- Prúdy nemenia pôvodnú dátovú štruktúru, poskytujú iba výsledok podľa zreťazených metód.
- Každá medzioperačná operácia je vykonávaná lenivo a ako výsledok vracia prúd, takže je možné zreťaziť rôzne medzioperačné operácie. Terminálové operácie označujú koniec toku a vrátia výsledok.
Rôzne operácie na streamoch
V streamoch existujú dva typy operácií:
- Medziľahlé operácie
- Ukončiť operácie
Medziľahlé operácie

Medziľahlé operácie sú typy operácií, v ktorých sú viaceré metódy zreťazené za sebou.
Charakteristika medzioperačných operácií
- Metódy sú spojené.
- Medziľahlé operácie transformujú prúd na iný prúd.
- Umožňuje koncepciu filtrovania, kde jedna metóda filtruje dáta a po spracovaní ich odovzdáva inej metóde.
Výhoda Java Stream
Existuje niekoľko výhod, kvôli ktorým používame Stream v jazyku Java, ako je uvedené nižšie:
- Žiadne úložisko
- Pipeline of Functions
- Lenivosť
- Môže byť nekonečný
- Dá sa paralelizovať
- Môže byť vytvorený z kolekcií, polí, riadkov súborov, metód v streame, IntStream atď.
Dôležité prechodné operácie
Nižšie je uvedených niekoľko prechodných operácií:
1. mapa()
Metóda map slúži na vrátenie prúdu pozostávajúceho z výsledkov aplikácie danej funkcie na prvky tohto prúdu.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. filter()
Metóda filtrovania sa používa na výber prvkov podľa predikátu odovzdaného ako argument.
rozdelenie reťazcov c++
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. zoradené()
Metóda sorted sa používa na triedenie prúdu.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> Terminálové operácie
Terminálové operácie sú typom operácií, ktoré vracajú výsledok. Tieto operácie sa ďalej nespracúvajú, len vrátia konečnú výslednú hodnotu.
Dôležité terminálové operácie
Nižšie je uvedených niekoľko terminálových operácií:
1. zbierať ()
Metóda zberu sa používa na vrátenie výsledku medzioperácií vykonaných na toku.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. forEach()
Metóda forEach sa používa na iteráciu cez každý prvok prúdu.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. znížiť()
Metóda redukcie sa používa na redukciu prvkov toku na jednu hodnotu. Metóda redukcie berie ako parameter BinaryOperator.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
Tu sa premennej ans priradí 0 ako počiatočná hodnota a pripočíta sa k nej i.
Poznámka: Intermediate Operations sú spustené na základe konceptu Lazy Evaluation, ktorý zaisťuje, že každá metóda vráti pevnú hodnotu (terminálna operácia) pred prechodom na ďalšiu metódu.
Príklad Java Stream
Java
arraylist v java sort
// Java program to demonstrate> // the use of stream in java> import> java.util.*;> import> java.util.stream.*;> class> Demo {> >public> static> void> main(String args[])> >{> >// create a list of integers> >List number = Arrays.asList(>2>,>3>,>4>,>5>);> >// demonstration of map method> >List square> >= number.stream()> >.map(x ->x * x)> >.collect(Collectors.toList());> >// create a list of String> >List names = Arrays.asList(> >'Reflection'>,>'Collection'>,>'Stream'>);> >// demonstration of filter method> >List result> >= names.stream()> >.filter(s ->s.startsWith(>'S'>))> >.collect(Collectors.toList());> > >System.out.println(result);> >// demonstration of sorted method> >List show> >= names.stream()> >.sorted()> >.collect(Collectors.toList());> > >System.out.println(show);> >// create a list of integers> >List numbers> >= Arrays.asList(>2>,>3>,>4>,>5>,>2>);> >// collect method returns a set> >Set squareSet> >= numbers.stream()> >.map(x ->x * x)> >.collect(Collectors.toSet());> > >System.out.println(squareSet);> >// demonstration of forEach method> >number.stream()> >.map(x ->x * x)> >.forEach(y ->System.out.println(y));> >// demonstration of reduce method> >int> even> >= number.stream()> >.filter(x ->x %>2> ==>0>)> >.reduce(>0>, (ans, i) ->ans + i);> >System.out.println(even);> >}> }> |
>
>
Výkon
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Dôležité body/pozorovania Java Stream
- Prúd pozostáva zo zdroja, za ktorým nasleduje nula alebo viacero medziľahlých metód, ktoré sú navzájom kombinované (reťazové) a terminálna metóda na spracovanie objektov získaných zo zdroja podľa opísaných metód.
- Prúd sa používa na výpočet prvkov podľa zreťazených metód bez zmeny pôvodnej hodnoty objektu.