Stream API, som introduceras i Java 8, används för att bearbeta samlingar av objekt. En ström i Java är en sekvens av objekt som stöder olika metoder som kan pipelineras för att producera önskat resultat.
Användning av Stream i Java
Användningen av Stream i Java nämns nedan:
- Stream API är ett sätt att uttrycka och bearbeta samlingar av objekt.
- Gör det möjligt för oss att utföra operationer som filtrering, kartläggning, minskning och sortering.
Hur skapar jag Java Stream?
Skapande av Java Stream är ett av de mest grundläggande stegen innan man överväger funktionerna i Java Stream. Nedan finns syntaxen för hur man deklarerar Java Stream.
Syntax
Stream stream;>
Här är T antingen en klass, objekt eller datatyp beroende på deklarationen.
Java Stream-funktioner
Funktionerna i Java Stream nämns nedan:
- En ström är inte en datastruktur istället tar den input från samlingar, arrayer eller I/O-kanaler.
- Strömmar ändrar inte den ursprungliga datastrukturen, de ger bara resultatet enligt pipelinemetoderna.
- Varje mellanliggande operation utförs lätt och returnerar en ström som ett resultat, därför kan olika mellanliggande operationer pipelineras. Terminaloperationer markerar slutet på streamen och returnerar resultatet.
Olika operationer på strömmar
Det finns två typer av operationer i strömmar:
- Mellanliggande verksamhet
- Avsluta verksamheten
Mellanliggande verksamhet

Mellanliggande operationer är de typer av operationer där flera metoder är kedjade i rad.
Egenskaper för mellanliggande operationer
- Metoderna är sammankopplade.
- Mellanliggande operationer omvandlar en ström till en annan ström.
- Det möjliggör konceptet med filtrering där en metod filtrerar data och skickar den till en annan metod efter bearbetning.
Fördelen med Java Stream
Det finns några fördelar på grund av vilka vi använder Stream i Java som nämns nedan:
1 miljon i siffror
- Ingen förvaring
- Pipeline av funktioner
- Lättja
- Kan vara oändligt
- Kan parallelliseras
- Kan skapas från samlingar, arrayer, File Lines, Methods in Stream, IntStream etc.
Viktiga mellanliggande operationer
Det finns några mellanliggande operationer som nämns nedan:
1. map()
Kartmetoden används för att returnera en ström som består av resultaten av att tillämpa den givna funktionen på elementen i denna ström.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. filter()
Filtermetoden används för att välja element enligt predikatet som skickas som argument.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. sorterad()
Den sorterade metoden används för att sortera strömmen.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> Terminaldrift
Terminaloperationer är den typ av operationer som returnerar resultatet. Dessa operationer bearbetas inte vidare, bara returnerar ett slutresultatvärde.
Viktiga terminaloperationer
Det finns några terminaloperationer som nämns nedan:
1. samla()
Insamlingsmetoden används för att returnera resultatet av de mellanliggande operationerna som utförs på strömmen.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. forEach()
Metoden forEach används för att iterera genom varje element i strömmen.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. reducera()
Reduceringsmetoden används för att reducera elementen i en ström till ett enda värde. Reduceringsmetoden tar 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);>
Här tilldelas ans variabel 0 som initialvärde och i läggs till den.
Notera: Intermediate Operations körs baserat på konceptet Lazy Evaluation, som säkerställer att varje metod returnerar ett fast värde (Terminal operation) innan man går vidare till nästa metod.
Exempel på Java Stream
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>
Viktiga punkter/observationer av Java Stream
- En ström består av en källa följt av noll eller fler mellanliggande metoder kombinerade tillsammans (pipelined) och en terminalmetod för att bearbeta objekten som erhållits från källan enligt de beskrivna metoderna.
- Stream används för att beräkna element enligt pipelinemetoderna utan att ändra objektets ursprungliga värde.