Stream API, der er introduceret i Java 8, bruges til at behandle samlinger af objekter. En strøm i Java er en sekvens af objekter, der understøtter forskellige metoder, som kan pipelineres for at producere det ønskede resultat.
Brug af Stream i Java
Der er brug af Stream i Java er nævnt nedenfor:
- Stream API er en måde at udtrykke og behandle samlinger af objekter på.
- Gør det muligt for os at udføre operationer som filtrering, kortlægning, reduktion og sortering.
Hvordan opretter man Java Stream?
Java Stream Creation er et af de mest grundlæggende trin, før du overvejer funktionerne i Java Stream. Nedenfor er syntaksen givet til, hvordan man deklarerer Java Stream.
Syntaks
Stream stream;>
Her er T enten en klasse, et objekt eller en datatype afhængigt af erklæringen.
Java Stream-funktioner
Funktionerne i Java-stream er nævnt nedenfor:
- En strøm er ikke en datastruktur, den tager i stedet input fra samlinger, arrays eller I/O-kanaler.
- Strømme ændrer ikke den originale datastruktur, de giver kun resultatet i henhold til de pipelinede metoder.
- Hver mellemliggende operation udføres dovent og returnerer en strøm som et resultat, derfor kan forskellige mellemliggende operationer pipelineres. Terminalhandlinger markerer slutningen af streamen og returnerer resultatet.
Forskellige operationer på streams
Der er to typer operationer i streams:
array slicing java
- Mellemliggende operationer
- Afslut driften
Mellemliggende operationer
Mellemliggende operationer er de typer operationer, hvor flere metoder er kædet i træk.
streng sammenlignet
Karakteristika for mellemliggende operationer
- Metoder er kædet sammen.
- Mellemliggende operationer omdanner en strøm til en anden strøm.
- Det muliggør konceptet med filtrering, hvor en metode filtrerer data og sender dem til en anden metode efter behandling.
Fordelen ved Java Stream
Der er nogle fordele, som vi bruger Stream i Java som nævnt nedenfor:
- Ingen opbevaring
- Pipeline af funktioner
- Dovenskab
- Kan være uendelig
- Kan paralleliseres
- Kan oprettes ud fra samlinger, arrays, File Lines, Methods in Stream, IntStream osv.
Vigtige mellemliggende operationer
Der er et par mellemliggende operationer nævnt nedenfor:
1. kort()
Kortmetoden bruges til at returnere en strøm, der består af resultaterne af at anvende den givne funktion på elementerne i denne strøm.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. filter()
Filtermetoden bruges til at vælge elementer i henhold til prædikatet, der er sendt som argument.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());>
3. sorteret()
Den sorterede metode bruges til at sortere strømmen.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());>
Terminaldrift
Terminaloperationer er den type operationer, der returnerer resultatet. Disse operationer behandles ikke yderligere, men returnerer en endelig resultatværdi.
hvad er en java stack
Vigtige terminaloperationer
Der er et par terminaloperationer nævnt nedenfor:
1. indsamle()
Opsamlingsmetoden bruges til at returnere resultatet af de mellemliggende operationer udført på strømmen.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. forHver()
ForEach-metoden bruges til at iterere gennem hvert element i strømmen.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forHver(y->System.out.println(y));>
3. reducere()
Reduceringsmetoden bruges til at reducere elementerne i en strøm til en enkelt værdi. Reduceringsmetoden tager en BinaryOperator som parameter.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
Her tildeles en variabel 0 som startværdi, og i tilføjes til den.
Bemærk: Mellemliggende operationer kører baseret på konceptet Lazy Evaluation, som sikrer, at hver metode returnerer en fast værdi (Terminal operation), før den går videre til den næste metode.
Eksempel på Java Stream
Java
objekt af array i java
datoformat.format 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 %> 2> ==> 0> )> > .reduce(> 0> , (ans, i) ->ans + i);> > System.out.println(even);> > }> }> |
>
>
Produktion
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Vigtige pointer/observationer af Java Stream
- En strøm består af en kilde efterfulgt af nul eller flere mellemliggende metoder kombineret (pipelinet) og en terminal metode til at behandle objekterne opnået fra kilden i henhold til de beskrevne metoder.
- Stream bruges til at beregne elementer i henhold til de pipelinede metoder uden at ændre den oprindelige værdi af objektet.