Stream API, predstavljen v Javi 8, se uporablja za obdelavo zbirk predmetov. Tok v Javi je zaporedje objektov, ki podpira različne metode, ki jih je mogoče cevovodno usmeriti, da ustvarijo želeni rezultat.
Uporaba Stream v Javi
Uporabe Stream v Javi so navedene spodaj:
- Stream API je način izražanja in obdelave zbirk objektov.
- Omogočite nam izvajanje operacij, kot so filtriranje, preslikava, zmanjševanje in razvrščanje.
Kako ustvariti Java Stream?
Ustvarjanje toka Java je eden najosnovnejših korakov pred obravnavo funkcionalnosti toka Java. Spodaj je podana sintaksa o tem, kako deklarirati Java Stream.
Sintaksa
Stream stream;>
Tu je T bodisi razred, objekt ali podatkovni tip, odvisno od deklaracije.
Funkcije Java Stream
Funkcije toka Java so omenjene spodaj:
obj v Javi
- Tok ni podatkovna struktura, temveč sprejema vhodne podatke iz zbirk, nizov ali V/I kanalov.
- Tokovi ne spremenijo izvorne podatkovne strukture, zagotavljajo le rezultat v skladu s cevovodnimi metodami.
- Vsaka vmesna operacija se leno izvaja in kot rezultat vrne tok, zato je mogoče različne vmesne operacije cevovodno usmeriti. Operacije terminala označijo konec toka in vrnejo rezultat.
Različne operacije na tokovih
Obstajata dve vrsti operacij v tokovih:
- Vmesne operacije
- Prekinite operacije
Vmesne operacije

Vmesne operacije so vrste operacij, pri katerih je več metod verižno povezanih v vrsto.
Značilnosti vmesnih operacij
- Metode so povezane skupaj.
- Vmesne operacije pretvorijo tok v drug tok.
- Omogoča koncept filtriranja, kjer ena metoda filtrira podatke in jih po obdelavi posreduje drugi metodi.
Prednost Java Stream
Obstaja nekaj prednosti, zaradi katerih uporabljamo Stream v Javi, kot je navedeno spodaj:
- Brez prostora za shranjevanje
- Cevovod funkcij
- lenoba
- Lahko neskončno
- Lahko se paralelizira
- Lahko se ustvari iz zbirk, matrik, vrstic datotek, metod v toku, IntStream itd.
Pomembne vmesne operacije
Spodaj je omenjenih nekaj vmesnih operacij:
1. zemljevid()
Metoda zemljevida se uporablja za vrnitev toka, sestavljenega iz rezultatov uporabe dane funkcije za elemente tega toka.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. filter()
Metoda filtra se uporablja za izbiro elementov glede na predikat, posredovan kot argument.
pretvorba iz niza v int v Javi
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. razvrščeno()
Razvrščena metoda se uporablja za razvrščanje toka.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> Operacije terminala
Terminalske operacije so vrsta operacij, ki vrnejo rezultat. Te operacije se ne obdelujejo naprej, le vrnejo končno vrednost rezultata.
Pomembne operacije terminala
Spodaj je omenjenih nekaj terminalskih operacij:
1. zbiraj()
Metoda collect se uporablja za vrnitev rezultatov vmesnih operacij, izvedenih v toku.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. forEach()
Metoda forEach se uporablja za ponavljanje skozi vsak element toka.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. zmanjšaj()
Metoda zmanjšanja se uporablja za zmanjšanje elementov toka na eno samo vrednost. Metoda redukcije vzame BinaryOperator kot parameter.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
Tukaj je spremenljivki ans dodeljena 0 kot začetna vrednost in ji je dodan i.
Opomba: Vmesne operacije se izvajajo na podlagi koncepta lene evalvacije, ki zagotavlja, da vsaka metoda vrne fiksno vrednost (terminalsko operacijo), preden se premakne na naslednjo metodo.
Primer Java Stream
Java
kaj je sklad java
podniz niza
// 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);> >}> }> |
>
>
Izhod
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Pomembne točke/opažanja Java Stream
- Tok je sestavljen iz vira, ki mu sledi nič ali več vmesnih metod, združenih skupaj (cevovodno), in terminalske metode za obdelavo objektov, pridobljenih iz vira, v skladu z opisanimi metodami.
- Stream se uporablja za izračun elementov v skladu s cevovodnimi metodami brez spreminjanja izvirne vrednosti objekta.