Java Entwicklung

Die Java 8 Stream API

Deklarative Datenverarbeitung statt komplexer Schleifen-Logik.

3. April 2026 | Von DEVCRAFT

Effiziente Datenverarbeitung mit Streams

Die mit Java 8 eingeführte Stream API hat die Art und Weise, wie wir mit Collections arbeiten, revolutioniert. Anstatt Collections imperativ mit for-each-Schleifen zu durchlaufen, beschreiben wir nun funktional, was mit den Daten geschehen soll – nicht wie.

1. Was ist ein Stream?

Ein Stream ist keine Datenstruktur, die Daten speichert, sondern ein Datenstrom, der Elemente aus einer Quelle (wie einer Liste) durch eine Pipeline von Operationen transportiert.

List<String> namen = Arrays.asList("Alice", "Bob", "Charlie", "Anna");

// Klassischer Filter-Vorgang
long anzahlA = namen.stream()
    .filter(n -> n.startsWith("A"))
    .count();

System.out.println("Namen mit A: " + anzahlA);

2. Intermediate vs. Terminal Operations

Das Konzept basiert auf zwei Arten von Operationen:

  • Intermediate: Diese Operationen (z.B. filter, map, sorted) geben einen neuen Stream zurück und sind lazy – sie werden erst ausgeführt, wenn eine Terminal-Operation aufgerufen wird.
  • Terminal: Diese schießen den Stream ab und liefern ein Ergebnis oder einen Seiteneffekt (z.B. collect, forEach, reduce).

3. Daten transformieren mit map()

Mit der map-Methode lassen sich Elemente eines Streams in einen anderen Typ oder Wert umwandeln.

List<Integer> namenLängen = namen.stream()
    .map(String::length)
    .collect(Collectors.toList());

"Streams machen Code nicht nur kürzer, sondern durch die deklarative Ausdrucksweise auch deutlich wartbarer und weniger fehleranfällig."