Die in Java 8 eingeführte Stream-API wird zum Verarbeiten von Objektsammlungen verwendet. Ein Stream in Java ist eine Folge von Objekten, die verschiedene Methoden unterstützt, die per Pipeline verarbeitet werden können, um das gewünschte Ergebnis zu erzielen.
Verwendung von Stream in Java
Die Verwendungsmöglichkeiten von Stream in Java sind unten aufgeführt:
- Die Stream-API ist eine Möglichkeit, Sammlungen von Objekten auszudrücken und zu verarbeiten.
- Ermöglichen Sie uns die Durchführung von Vorgängen wie Filtern, Zuordnen, Reduzieren und Sortieren.
Wie erstelle ich einen Java-Stream?
Die Erstellung eines Java-Streams ist einer der grundlegendsten Schritte, bevor die Funktionalitäten des Java-Streams berücksichtigt werden. Nachfolgend finden Sie die Syntax zum Deklarieren von Java Stream.
Java Random Mathe Random
Syntax
Stream stream;>
Hier ist T je nach Deklaration entweder eine Klasse, ein Objekt oder ein Datentyp.
Java-Stream-Funktionen
Die Funktionen des Java-Streams sind unten aufgeführt:
- Ein Stream ist keine Datenstruktur, sondern nimmt Eingaben von den Sammlungen, Arrays oder E/A-Kanälen entgegen.
- Streams verändern die ursprüngliche Datenstruktur nicht, sie liefern nur das Ergebnis gemäß den Pipeline-Methoden.
- Jede Zwischenoperation wird träge ausgeführt und gibt als Ergebnis einen Stream zurück, sodass verschiedene Zwischenoperationen per Pipeline verarbeitet werden können. Terminaloperationen markieren das Ende des Streams und geben das Ergebnis zurück.
Verschiedene Vorgänge auf Streams
Es gibt zwei Arten von Operationen in Streams:
- Zwischenoperationen
- Beenden Sie den Betrieb
Zwischenoperationen

Zwischenoperationen sind Operationstypen, bei denen mehrere Methoden hintereinander verkettet werden.
Merkmale von Zwischenoperationen
- Methoden sind miteinander verkettet.
- Zwischenoperationen wandeln einen Stream in einen anderen Stream um.
- Es ermöglicht das Filterkonzept, bei dem eine Methode Daten filtert und sie nach der Verarbeitung an eine andere Methode übergibt.
Nutzen von Java Stream
Es gibt einige Vorteile, aufgrund derer wir Stream in Java verwenden, wie unten erwähnt:
- Kein Speicher
- Pipeline von Funktionen
- Faulheit
- Kann unendlich sein
- Kann parallelisiert werden
- Kann aus Sammlungen, Arrays, Dateizeilen, Methoden in Stream, IntStream usw. erstellt werden.
Wichtige Zwischenoperationen
Nachfolgend sind einige Zwischenoperationen aufgeführt:
1. Karte()
Die Map-Methode wird verwendet, um einen Stream zurückzugeben, der aus den Ergebnissen der Anwendung der angegebenen Funktion auf die Elemente dieses Streams besteht.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. filter()
Die Filtermethode wird verwendet, um Elemente gemäß dem als Argument übergebenen Prädikat auszuwählen.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. sortiert()
Die sortierte Methode wird zum Sortieren des Streams verwendet.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> Terminalbetrieb
Terminaloperationen sind die Art von Operationen, die das Ergebnis zurückgeben. Diese Vorgänge werden nicht weiter verarbeitet, sondern geben lediglich einen Endergebniswert zurück.
VLC-Download auf YouTube
Wichtige Terminaloperationen
Im Folgenden werden einige Terminaloperationen erwähnt:
1. sammeln()
Die Collect-Methode wird verwendet, um das Ergebnis der am Stream durchgeführten Zwischenoperationen zurückzugeben.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. forEach()
Die forEach-Methode wird verwendet, um jedes Element des Streams zu durchlaufen.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. Reduzieren()
Die Methode „reduce“ wird verwendet, um die Elemente eines Streams auf einen einzigen Wert zu reduzieren. Die Reduce-Methode benötigt einen BinaryOperator als Parameter.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
Hier wird der Variablen ans 0 als Anfangswert zugewiesen und i dazu addiert.
Notiz: Zwischenoperationen basieren auf dem Konzept der Lazy Evaluation, das sicherstellt, dass jede Methode einen festen Wert (Terminaloperation) zurückgibt, bevor zur nächsten Methode übergegangen wird.
Beispiel für einen 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);> >}> }> |
>
Was ist ein Java-Stack?
>
Ausgabe
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Wichtige Punkte/Beobachtungen zum Java Stream
- Ein Stream besteht aus einer Quelle, gefolgt von null oder mehr Zwischenmethoden, die miteinander kombiniert (pipelined) sind, und einer Terminalmethode, um die von der Quelle erhaltenen Objekte gemäß den beschriebenen Methoden zu verarbeiten.
- Stream wird verwendet, um Elemente gemäß den Pipeline-Methoden zu berechnen, ohne den ursprünglichen Wert des Objekts zu ändern.