Heim > Java > javaLernprogramm > Grundlegendes zu Terminal- und Zwischenoperatoren in Java-Streams: Hauptunterschiede und Beispiele

Grundlegendes zu Terminal- und Zwischenoperatoren in Java-Streams: Hauptunterschiede und Beispiele

Barbara Streisand
Freigeben: 2024-10-11 10:11:02
Original
656 Leute haben es durchsucht

Understanding Terminal vs Intermediate Operators in Java Streams: Key Differences and Examples

1. Übersicht über Java Streams

Java Streams, eingeführt in Java 8, ermöglichen funktionale Operationen auf Sequenzen von Elementen. Sie bieten eine leistungsstarke Möglichkeit, Datensammlungen deklarativer und lesbarer zu verarbeiten.

1.1 Was sind Terminalbetreiber?

Terminaloperatoren sind Vorgänge, die das Ende einer Stream-Pipeline markieren. Sie lösen die Verarbeitung der Daten innerhalb des Streams aus und erzeugen ein Ergebnis oder einen Nebeneffekt. Sobald ein Terminaloperator aufgerufen wird, gilt der Stream als verbraucht und es können keine weiteren Vorgänge daran ausgeführt werden.

Häufige Beispiele für Terminalbetreiber:

  • forEach(): Iteriert über jedes Element und führt eine Aktion aus.
  • collect(): Sammelt die Elemente des Streams in einer Sammlung oder anderen Formen.
  • reduce(): Kombiniert Elemente des Streams zu einem einzigen Ergebnis.
  • count(): Zählt die Anzahl der Elemente im Stream.

Beispielcode:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class TerminalOperatorExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

        // Terminal operator: forEach
        names.stream().forEach(name -> System.out.println("Name: " + name));

        // Terminal operator: collect
        List<String> filteredNames = names.stream()
                                           .filter(name -> name.startsWith("A"))
                                           .collect(Collectors.toList());
        System.out.println("Filtered Names: " + filteredNames);
    }
}
Nach dem Login kopieren

Demo-Ergebnisse:

Name: Alice
Name: Bob
Name: Charlie
Filtered Names: [Alice]
Nach dem Login kopieren

1.2 Was sind Zwischenoperatoren?

Zwischenoperatoren sind Operationen, die einen Stream in einen anderen Stream umwandeln. Sie lösen keine Verarbeitung aus, bis ein Terminaloperator aufgerufen wird. Diese Operatoren werden verwendet, um eine Pipeline von Operationen aufzubauen, die eine effiziente Datenverarbeitung und -manipulation ermöglichen.

Häufige Beispiele für mittlere Operatoren:

  • filter(): Filtert Elemente basierend auf einem Prädikat.
  • map(): Transformiert jedes Element mithilfe einer Funktion.
  • sorted(): Sortiert Elemente nach einem Komparator.
  • distinct(): Entfernt doppelte Elemente.

Beispielcode:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class IntermediateOperatorExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "Alice");

        // Intermediate operators: filter and map
        List<String> transformedNames = names.stream()
                                              .filter(name -> name.startsWith("A"))
                                              .map(String::toUpperCase)
                                              .distinct()
                                              .collect(Collectors.toList());
        System.out.println("Transformed Names: " + transformedNames);
    }
}
Nach dem Login kopieren

Demo-Ergebnisse:

Transformed Names: [ALICE]
Nach dem Login kopieren

2. Hauptunterschiede zwischen Terminal- und Zwischenbetreibern

Das Verständnis der Unterschiede zwischen diesen Operatoren ist für eine effektive Stream-Verarbeitung von entscheidender Bedeutung.

2.1 Zweck und Funktionalität

  • Terminaloperatoren: Beenden Sie die Stream-Pipeline, lösen Sie die Verarbeitung aus und erzeugen Sie ein Ergebnis oder einen Nebeneffekt. Sie dienen dazu, Aktionen auszuführen und eine Ausgabe aus dem Stream zu generieren.
  • Zwischenoperatoren: Wandeln Sie den Stream in einen anderen Stream um, ohne die Daten zu verarbeiten. Sie werden verwendet, um eine Pipeline von Vorgängen zu erstellen, die ausgeführt werden, sobald ein Terminaloperator aufgerufen wird.

2.2 Ausführung und Leistung

  • Terminalbetreiber: Veranlassen die Verarbeitung der gesamten Stream-Pipeline. Sie werden nur einmal ausgeführt und können je nach Vorgang rechenintensiv sein.
  • Zwischenoperatoren: Sind faul und führen keine Verarbeitung durch, bis ein Terminaloperator aufgerufen wird. Dies ermöglicht eine effiziente Verkettung von Operationen ohne unnötige Berechnungen.

2.3 Veränderlichkeit und Zustand

  • Terminalbetreiber: Kann Nebenwirkungen hervorrufen oder den externen Zustand ändern. Beispielsweise kann forEach() Elemente auf der Konsole drucken oder eine externe Sammlung aktualisieren.
  • Zwischenoperatoren: Sind zustandslos und ändern den externen Zustand nicht. Sie bearbeiten nur die Daten innerhalb des Streams und erzeugen einen neuen Stream als Ausgabe.

3. Fazit

Das Verständnis von Terminal- und Zwischenoperatoren in Java Streams ist entscheidend für das Schreiben von effizientem und lesbarem Code. Terminalbetreiber vervollständigen die Stream-Verarbeitungspipeline, während Zwischenoperatoren die Pipeline aufbauen und umwandeln. Durch den effektiven Einsatz dieser Operatoren können Sie Datenverarbeitungsaufgaben deklarativer und funktionaler erledigen.

Wenn Sie Fragen haben oder weitere Erläuterungen benötigen, können Sie unten gerne einen Kommentar abgeben!

Weitere Beiträge finden Sie unter: Grundlegendes zu Terminal- und Zwischenoperatoren in Java-Streams: Hauptunterschiede und Beispiele

Das obige ist der detaillierte Inhalt vonGrundlegendes zu Terminal- und Zwischenoperatoren in Java-Streams: Hauptunterschiede und Beispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage