logo

Stream în Java

Introdus în Java 8, Stream API este folosit pentru a procesa colecții de obiecte. Un flux în Java este o secvență de obiecte care acceptă diverse metode care pot fi canalizate pentru a produce rezultatul dorit.

Utilizarea Stream în Java

Există utilizări ale Stream în Java sunt menționate mai jos:

  1. Stream API este o modalitate de a exprima și procesa colecții de obiecte.
  2. Permiteți-ne să efectuăm operațiuni precum filtrarea, maparea, reducerea și sortarea.

Cum se creează un flux Java?

Crearea Java Stream este unul dintre cei mai de bază pași înainte de a lua în considerare funcționalitățile Java Stream. Mai jos este sintaxa dată despre cum să declari Java Stream.



Sintaxă

Stream stream;>

Aici T este fie o clasă, un obiect sau un tip de date, în funcție de declarație.

Caracteristici Java Stream

Caracteristicile fluxului Java sunt menționate mai jos:

  • Un flux nu este o structură de date, ci preia intrare de la canalele Colecții, Matrice sau I/O.
  • Fluxurile nu modifică structura originală a datelor, ele oferă doar rezultatul conform metodelor pipeline.
  • Fiecare operație intermediară este executată leneș și returnează un flux ca rezultat, prin urmare pot fi canalizate diverse operații intermediare. Operațiile terminale marchează sfârșitul fluxului și returnează rezultatul.

Operații diferite pe fluxuri

Există două tipuri de operațiuni în fluxuri:

  1. Operațiuni intermediare
  2. Terminați operațiunile

Operațiuni intermediare

operațiuni de flux java

Operațiile intermediare sunt tipurile de operații în care mai multe metode sunt înlănțuite într-un rând.

Caracteristicile operațiunilor intermediare

  1. Metodele sunt legate între ele.
  2. Operațiunile intermediare transformă un flux într-un alt flux.
  3. Activează conceptul de filtrare în care o metodă filtrează datele și le transmite unei alte metode după procesare.

Beneficiul Java Stream

Există câteva beneficii din cauza cărora folosim Stream în Java, așa cum este menționat mai jos:

  • Fără depozitare
  • Conducta de funcții
  • Lene
  • Poate fi infinit
  • Poate fi paralelizat
  • Poate fi creat din colecții, matrice, linii de fișiere, metode în flux, IntStream etc.

Operațiuni intermediare importante

Există câteva operațiuni intermediare menționate mai jos:

1. harta()

Metoda map este folosită pentru a returna un flux constând din rezultatele aplicării funcției date elementelor acestui flux.

List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>

2. filtru ()

Metoda de filtrare este folosită pentru a selecta elemente conform Predicatului transmis ca argument.

redenumirea directorului în linux
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());>

3. sortat()

Metoda sortată este utilizată pentru a sorta fluxul.

List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());>

Operațiuni terminale

Operațiile terminale sunt tipul de operații care returnează rezultatul. Aceste operațiuni nu sunt procesate în continuare, ci doar returnează o valoare finală a rezultatului.

Operațiuni importante ale terminalului

Există câteva operațiuni terminale menționate mai jos:

1. colecta()

Metoda de colectare este utilizată pentru a returna rezultatul operațiunilor intermediare efectuate pe flux.

List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>

2. pentru fiecare()

Metoda forEach este folosită pentru a itera prin fiecare element al fluxului.

List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>

3. reduce()

Metoda reducere este utilizată pentru a reduce elementele unui flux la o singură valoare. Metoda reduce ia ca parametru un BinaryOperator.

List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>

Aici unei variabile i se atribuie 0 ca valoare inițială și i se adaugă la aceasta.

Notă: Operațiunile intermediare rulează pe baza conceptului de evaluare lenenă, care asigură că fiecare metodă returnează o valoare fixă ​​(operație terminală) înainte de a trece la următoarea metodă.

Exemplu de flux Java

Java




stivă java
// 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 %>>>==>0>)> >.reduce(>0>, (ans, i) ->ans + i);> >System.out.println(even);> >}> }>

>

>

Ieșire

[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>

Puncte/Observații importante ale fluxului Java

  1. Un flux constă dintr-o sursă urmată de zero sau mai multe metode intermediare combinate împreună (conducte) și o metodă terminală pentru a procesa obiectele obținute din sursă conform metodelor descrise.
  2. Stream este folosit pentru a calcula elemente conform metodelor pipeline, fără a modifica valoarea inițială a obiectului.