logo

Srautas Java

„Java 8“ įdiegta Stream API naudojama objektų rinkiniams apdoroti. Srautas „Java“ yra objektų seka, palaikanti įvairius metodus, kuriuos galima sujungti, kad būtų pasiektas norimas rezultatas.

Stream naudojimas Java

Toliau pateikiami Stream naudojimo būdai Java:



  1. Stream API yra būdas išreikšti ir apdoroti objektų kolekcijas.
  2. Leiskite mums atlikti tokias operacijas kaip filtravimas, žemėlapių sudarymas, mažinimas ir rūšiavimas.

Kaip sukurti „Java Stream“?

„Java Stream“ kūrimas yra vienas iš pagrindinių žingsnių prieš svarstant „Java Stream“ funkcijas. Žemiau pateikiama sintaksė, kaip deklaruoti „Java Stream“.

Sintaksė

Stream stream;>

Čia T yra klasė, objektas arba duomenų tipas, priklausomai nuo deklaracijos.

„Java Stream“ funkcijos

„Java“ srauto funkcijos yra paminėtos toliau:



  • Srautas nėra duomenų struktūra, o įvestis iš kolekcijų, masyvų arba įvesties / išvesties kanalų.
  • Srautai nekeičia pradinės duomenų struktūros, jie tik pateikia rezultatą pagal konvejerinius metodus.
  • Kiekviena tarpinė operacija yra tingiai vykdoma ir dėl to grąžinamas srautas, todėl gali būti sudarytos įvairios tarpinės operacijos. Terminalo operacijos pažymi srauto pabaigą ir grąžina rezultatą.

Įvairios operacijos srautuose

Yra dviejų tipų operacijos srautuose:

  1. Tarpinės operacijos
  2. Nutraukti operacijas

Tarpinės operacijos

Java srauto operacijos

Tarpinės operacijos yra operacijų tipai, kai keli metodai yra sujungti iš eilės.



Tarpinių operacijų charakteristikos

  1. Metodai yra sujungti grandine.
  2. Tarpinės operacijos srautą paverčia kitu srautu.
  3. Tai įgalina filtravimo koncepciją, kai vienas metodas filtruoja duomenis ir po apdorojimo perduoda juos kitam metodui.

„Java Stream“ pranašumas

Yra keletas privalumų, dėl kurių mes naudojame Stream Java, kaip nurodyta toliau:

  • Nėra saugyklos
  • Funkcijų vamzdynas
  • Tinginystė
  • Gali būti begalinis
  • Galima lygiagretinti
  • Galima sukurti iš kolekcijų, masyvų, failų eilučių, metodų sraute, „IntStream“ ir kt.

Svarbios tarpinės operacijos

Toliau pateikiamos kelios tarpinės operacijos:

1. žemėlapis ()

Žemėlapio metodas naudojamas norint grąžinti srautą, sudarytą iš duotosios funkcijos taikymo šio srauto elementams rezultatų.

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

2. filtras ()

Filtro metodas naudojamas elementams pasirinkti pagal predikatą, pateiktą kaip argumentą.

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

3. surūšiuotas()

Rūšiavimo metodas naudojamas srautui rūšiuoti.

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

Terminalo operacijos

Terminalo operacijos yra operacijų, kurios grąžina rezultatą, tipas. Šios operacijos toliau neapdorojamos, tik pateikia galutinę rezultato reikšmę.

Svarbios terminalo operacijos

Toliau pateikiamos kelios terminalo operacijos:

1. rinkti ()

Surinkimo metodas naudojamas sraute atliktų tarpinių operacijų rezultatui grąžinti.

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

2. už kiekvieną ()

ForEach metodas naudojamas kartoti kiekvieną srauto elementą.

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

3. sumažinti ()

Sumažinimo metodas naudojamas srauto elementams sumažinti iki vienos vertės. Sumažinimo metodas naudoja BinaryOperator kaip parametrą.

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

Čia ans kintamajam priskiriama 0 kaip pradinė reikšmė ir prie jo pridedamas i.

Pastaba: Tarpinės operacijos vykdomos remiantis tingaus vertinimo koncepcija, kuri užtikrina, kad kiekvienas metodas grąžintų fiksuotą reikšmę (terminalo operacija), prieš pereinant prie kito metodo.

Java Stream pavyzdys

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

>

>

Išvestis

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

Svarbūs „Java Stream“ punktai / pastabos

  1. Srautas susideda iš šaltinio, po kurio eina nulis arba daugiau tarpinių metodų, sujungtų kartu (sujungtas) ir terminalo metodas, skirtas apdoroti objektus, gautus iš šaltinio pagal aprašytus metodus.
  2. Srautas naudojamas elementams apskaičiuoti pagal konvejerinius metodus, nekeičiant pradinės objekto vertės.