Zum Inhalt springen

Kombikurs Java Streams: Basics + Advanced

Wer Java Streams wirklich beherrschen will, sollte Basics und Advanced nicht auf zwei separate Trainingsblöcke verteilen. Der Wissensaufbau funktioniert besser am Stück: Was euer Team an Tag eins mit Stream-Pipelines, flatMap() und Collectors aufbaut, wird an Tag zwei und drei sofort weitergedacht – mit Custom Spliterators, groupingBy() und den neuen Stream Gatherers.

In drei Tagen bringt dieser Kurs euer Team auf das volle Niveau der Java Streams API – verständlich erklärt, direkt anwendbar und günstiger als zwei Einzelbuchungen.

Jetzt unverbindlich anfragen
3 Tage
Individueller Termin
Vor Ort oder Online
Deutsch / Englisch
Anpassbare Agenda
Teilnahme- zertifikat

Was ihr in dieser Schulung lernt

Dieser dreitägige Kombikurs vereint die Inhalte zweier Einzeltrainings – Java Streams Basics und Java Streams Advanced – und vermittelt euch ein praxisnahes und tiefgehendes Verständnis der Java Stream API: von den Grundlagen über Best Practices bis hin zu fortgeschrittenen Techniken wie Custom Collectors und Stream Gatherers.

Ihr könnt Java Streams auch in zwei getrennten Trainings lernen – aber das Kombipaket ist effizienter: drei kompakte Tage statt vier, ein nahtloser Übergang von Basics zu Advanced, und ein Lernbogen, der ohne Unterbrechung aufeinander aufbaut.

Am ersten Tag lernt ihr die funktionalen Grundlagen und den Aufbau von Stream-Pipelines kennen:

  • Rolle von Intermediate- und Terminal-Operations
  • Unterschied zu Collections
  • Vorteile von Lazy Evaluation
  • Stream-Erstellung mit Collections, Arrays, Files und Ranges

All das setzt ihr direkt in praktischen Übungen um – die perfekte Basis für die fortgeschrittenen Themen an Tag zwei und drei.

An Tag zwei und drei geht es um Effizienz, Erweiterbarkeit und moderne Techniken:

  • Eigene Collectors entwickeln (inkl. Characteristics & Finisher)
  • Stream-Pipelines analysieren und optimieren
  • Custom Spliterators schreiben – und ihre Performance-Vorteile verstehen
  • Infinite Streams, Directory Walking & File-Streams
  • Stream Gatherers API (ab Java 22, finalisiert in Java 24): Built-ins einsetzen, eigene Gatherers schreiben, State verwalten

Dabei entwickelt ihr ein tiefes Verständnis für das Innenleben der Streams – und könnt sicher entscheiden, wann und wie ihr Streams sinnvoll einsetzt – und wann ihr bewusst darauf verzichtet.

Der Kurs endet mit einem umfangreichen Abschlussprojekt, in dem ihr ein reales Datenverarbeitungsszenario mit Streams modelliert – von der Anforderung über das Stream-Design bis zur performanten Lösung. Wir analysieren gemeinsam eure Ergebnisse und diskutieren Best Practices für produktionsreifen Stream-Code.

👉 Du suchst nur den Einstieg? Dann wirf einen Blick auf Java Streams Basics – Praxis-Grundlagen für Einsteiger:innen.

👉 Oder du willst nur die fortgeschrittenen Themen? Dann passt Java Streams Advanced – Gatherers, Spliterators & Co. besser zu dir.

Zielgruppe

Der Kurs richtet sich an Java-Entwickler:innen, die von Grund auf lernen möchten, wie sie die Streams API effizient und elegant einsetzen – und direkt tiefer einsteigen wollen: mit Fokus auf Performance, Erweiterbarkeit und modernen Features wie Gatherers oder Custom Spliterators.

Ideal für alle, die sich in kurzer Zeit ein umfassendes Wissen zu Java Streams aneignen wollen – etwa bei einem Technologie-Upgrade, Relaunch oder Refactoring-Vorhaben.

Agenda

Tag 1: Streams Basics

Funktionale Programmierung in Java:

  • Lambda-Ausdrücke: Syntax, Typen und Verwendung
  • Funktionale Interfaces (Consumer, Supplier, Function, Predicate, etc.)
  • Methodenreferenzen: Static, Instance, Constructor References
  • Praktische Übungen: Lambda-Ausdrücke vs. anonyme Klassen

Stream-Grundlagen:

  • Was ist ein Stream? Konzeptuelle Unterschiede zu Collections
  • Stream-Pipeline Anatomie: Source → Intermediate Operations → Terminal Operations
  • Lazy Evaluation und ihre Auswirkungen
  • Stream-Erstellung: von Collections, Arrays, Files, Ranges
  • Primitive Streams: IntStream, LongStream, DoubleStream
  • Praktische Übungen: Erste Stream-Pipelines mit primitiven Streams

Intermediate Operations Deep Dive:

  • Transformationen mit map(), flatMap(), filter()
  • Auswahl und Sortierung: distinct(), sorted(), limit(), skip()
  • Debugging mit peek() – richtig eingesetzt
  • Chaining von Operations und Performance-Aspekte
  • Praktische Übungen: Komplexere Datenverarbeitung

Terminal Operations:

  • collect() – der vielseitigste Terminal Operator
  • Eingebaute Collectors: toList(), toSet(), toMap() – Stream to Map leicht gemacht
  • forEach(), forEachOrdered()
  • reduce() für Aggregationen
  • find-Operationen: findFirst(), findAny() – Rückgabetyp Optional verstehen und richtig verwenden
  • Matching-Operationen: allMatch(), anyMatch(), noneMatch()
  • Praktische Übungen: Terminal Operations mit Standard-Collectors

Tage 2 und 3: Streams Advanced

Advanced Collectors und Reduce Operations:

  • reduce() für Aggregationen: Konzepte und praktische Anwendung
  • peek() für Debugging: Wann sinnvoll, wann nicht
  • Grouping: groupingBy(), partitioningBy()
  • Downstream Collectors: counting(), summingInt(), averagingDouble()
  • Nested Grouping und komplexe Aggregationen
  • joining() für String-Operationen
  • Praktische Übungen: Komplexe Datenanalyse mit Collectors

Custom Collectors entwickeln:

  • Collector Interface verstehen: supplier(), accumulator(), combiner(), finisher()
  • Characteristics: CONCURRENT, IDENTITY_FINISH, UNORDERED
  • Einfache Custom Collectors implementieren
  • Komplexere Scenarios: Custom Object Collection
  • Praktische Übungen: Eigene Collectors schreiben

Stream Performance und Spliterator Grundlagen:

  • Wann Streams verwenden vs. traditionelle Schleifen
  • Performance-Fallen: Boxing/Unboxing, zu lange Pipelines
  • Parallel Streams: Wann sinnvoll, Common Fork/Join Pool
  • Memory-Effizienz und große Datenmengen
  • Spliterator verstehen: Was ist ein Spliterator und seine Rolle
  • Spliterator Characteristics: ORDERED, SIZED, SUBSIZED, CONCURRENT, etc.
  • Wie Characteristics die Stream-Performance beeinflussen

Legacy Code Refactoring Workshop:

  • Gemeinsame Refactoring-Session: Schleifen zu Streams
  • Identifikation geeigneter Refactoring-Kandidaten
  • Schritt-für-Schritt Transformation von Legacy Code
  • Performance-Vergleiche: Vorher/Nachher
  • Code-Readability vs. Performance Trade-offs
  • Wann Refactoring sinnvoll ist und wann nicht
  • Praktische Übungen: Verschiedene Legacy-Szenarien

Fortgeschrittene Stream-Patterns und Custom Spliterators:

  • Conditional Operations mit Optional
  • Error Handling in Streams
  • Custom Spliterator implementieren: Eigene Datenstrukturen für Streams
  • Spliterator Patterns: tryAdvance(), trySplit(), estimateSize()
  • Parallelisierung optimieren durch custom Spliterators
  • Stream von Files: Lines, Directory Walking
  • Infinite Streams: generate(), iterate()
  • Praktische Übungen: Custom Spliterator für spezielle Datenstrukturen

Stream Gatherers (ab Java 22, finalisiert in Java 24):

  • Was sind Stream Gatherers und warum wurden sie eingeführt
  • Gatherer Interface verstehen: integrator(), combiner(), finisher()
  • Built-in Gatherers: fold(), scan(), windowFixed(), windowSliding()
  • Custom Gatherers implementieren
  • State Management in Gatherers
  • Praktische Übungen: Eigene Gatherers für spezielle Use Cases

Integration und Architecture Patterns:

  • Streams in Repository Pattern
  • Functional Programming Principles mit Streams
  • Stream-basierte APIs designen
  • Migration Strategies: Legacy Code zu Streams
  • Anti-Patterns und Debugging: Typische Fehler vermeiden
  • Testing von Stream-Code

Workshop und Problemlösung:

  • Komplexes Praxisprojekt: Ende-zu-Ende Stream-Pipeline
  • Code Review Session: Teilnehmer-Code analysieren
  • Performance-Optimierung an realen Beispielen
  • Q&A und individuelle Problemstellungen
  • Best Practices Zusammenfassung

Agenda als PDF

Ist das das Training, das euer Team weiterbringt?

Die Agenda ist kein starres Programm: Schwerpunkte, Termin und Format können wir individuell auf euer Team abstimmen.

Jetzt unverbindlich anfragen

Warum mit mir lernen?

Ich arbeite seit 30 Jahren als Entwickler, CTO, Trainer, Autor und Speaker mit Java.

In dieser Zeit habe ich Unternehmen geholfen, komplexe Java-Systeme zu modernisieren, performanten Code zu schreiben und Teams nachhaltig weiterzuentwickeln.

Mit HappyCoders.eu habe ich einen der meistgelesenen Java-Blogs im deutschsprachigen Raum aufgebaut und halte regelmäßig Vorträge auf Konferenzen und User Groups.

Mein Ziel: komplexe Themen so vermitteln, dass sie verständlich, praxisnah und direkt anwendbar sind.

Bewertet mit 4,97 von 5 auf ProvenExpert

Mehr über mich

Stimmen aus meinen Trainings

Sven Woltmann von HappyCoders war bei uns, um Neuerungen rund um Java 25 gemeinsam zu testen und zu verstehen.

Zwei Tage lang haben wir uns intensiv mit Unnamed Variables & Patterns, Stream Gatherers, Scoped Values, der Foreign Function & Memory API sowie Performance-Themen wie virtuellen Threads ohne Pinning beschäftigt.

Ein großes Dankeschön an Sven für die hervorragende Vorbereitung, die klare Didaktik und die hohe technische Expertise. Das war eine Schulung ganz nach unserem Geschmack.

HBT
Hamburger Berater Team GmbH

Inhalt und Präsentation nahezu makellos. Ich habe dir durchgehend gerne zugehört, Neues gelernt und hatte Spaß an der Sache.

Beeindruckend war deine Sicherheit im Beantworten von Zwischenfragen.

David Munck
Java-Training bei DAKOSY

Wer Java versteht, kann diesem Trainer ohne weiteres folgen. Übungen sind durchdacht und aufs Wesentliche fokussiert.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Eine gute tiefgründige Übersicht über alle relevanten Java-Features seit Java 8 und die Gelegenheit, all diese Features selbst zu testen.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Gesamtpaket sehr stimmig und immer angepasst für uns.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Sehr praxisnahe und gute Übungsbeispiele.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Schnelles Reagieren auf Fragen – sehr flexibler Trainer.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Sehr gutes Repo mit Erklärungen + Übungen an einem Ort.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Tempo + Tiefe TOP.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Theorie + Praxis Mix sehr angenehm.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Komplexes Thema super herunter gebrochen.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Alle wichtigen Neuigkeiten von Java 9–25 wurden gut erklärt.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Die Mischung aus Wissen, Sympathie und dem Inhalt war sehr angenehm.

Teilnehmer:in eines Java-Trainings
DAKOSY Datenkommunikationssystem AG

Noch Fragen?

Teilnahme & Buchung

Können Einzelpersonen das Training buchen?

Dieses Training ist ausschließlich für Teams buchbar. Wenn du als Einzelperson teilnehmen möchtest, biete ich zwei Kurse über ppedv an:

Findet die Schulung inhouse oder online statt?

Beides ist möglich: Entweder komme ich für ein Inhouse-Training zu euch ins Unternehmen – in ganz Deutschland, Österreich und der Schweiz – oder wir führen die Schulung online durch, in der Regel über Zoom.

Wie viele Teilnehmer:innen sind möglich?

Ich empfehle maximal 12 Teilnehmer:innen pro Training. So kann ich alle individuell betreuen. Eine Mindestanzahl gibt es nicht – ich berechne pro Training, nicht pro Person.

Wie läuft die Buchung ab?

Am einfachsten über das Anfrageformular oder per E-Mail an schulung@happycoders.eu. Direkt nach dem Absenden kannst du über Calendly einen Video-Call buchen, in dem wir die Details besprechen. Danach bekommst du ein konkretes Angebot von mir.

Voraussetzungen

Welche Java-Vorkenntnisse werden vorausgesetzt?

Der Kurs setzt solide Java-Grundkenntnisse voraus – idealerweise mindestens zwei Jahre praktische Erfahrung. Da der erste Tag mit Lambda-Ausdrücken und funktionalen Interfaces beginnt, musst du diese Themen nicht vorab kennen. Erfahrung mit Collections und dem grundlegenden Java-Typsystem ist aber wichtig, damit wir direkt in die Stream-Pipeline-Konzepte einsteigen können.

Welche technischen Voraussetzungen brauchen wir?

Alle Teilnehmer:innen brauchen eine aktuelle IDE mit mindestens Java 24 – ich selbst verwende IntelliJ IDEA. Auch im Terminal sollte mindestens Java 24 installiert sein, da wir einige der Übungen im Terminal durchführen werden.

Ablauf & Inhalte

Wie läuft ein Trainingstag zeitlich ab?

Ein Trainingstag besteht aus vier Modulen zu je 90 Minuten – insgesamt also 6 Stunden Netto-Training. Jedes Modul wechselt zwei- bis dreimal zwischen Theorie und Praxis, sodass ihr das Gelernte direkt am Code anwendet. Zwischen dem ersten und zweiten sowie dem dritten und vierten Modul gibt es eine kurze Pause, zwischen Modul zwei und drei eine längere Mittagspause. Die genauen Uhrzeiten stimmen wir auf eure Arbeitszeiten ab – das lässt sich flexibel regeln.

Wie viel Zeit entfällt auf Theorie, wie viel auf Praxis?

Etwa zur Hälfte Theorie, zur Hälfte Praxis: Auf eine kurze Theoriephase folgt direkt die Anwendung am Code – mit Beispielen aus echten Projekten. Reines Zuhören hilft wenig; das Wissen muss sofort benutzt werden, damit es bleibt.

Können wir die Agenda an unser Team anpassen?

Ja – Themen kürzen, stärker gewichten, die Reihenfolge ändern oder Inhalte aus verschiedenen Kursen kombinieren: Die Agenda passe ich gerne an euer Team an. Da ich dafür die Trainingsunterlagen überarbeite, ist das mit Mehraufwand verbunden – ihr bekommt dafür ein individuelles Angebot.

Format & Materialien

Welche Plattform nutzen wir beim virtuellen Training?

In der Regel verwenden wir Zoom. Wenn ihr eine eigene Plattform bevorzugt – zum Beispiel Microsoft Teams oder Google Meet – arbeite ich gerne damit. Sagt mir einfach vorab Bescheid.

Bekommen die Teilnehmer:innen Unterlagen zum Mitnehmen?

Ja. Vor dem Training erhaltet ihr die Übungsaufgaben als Git-Repository, damit ihr direkt loslegen könnt. Nach dem Training bekommt ihr außerdem die Folien – inklusive aller Lösungen zu den Übungsaufgaben.

Gibt es eine Teilnahmebescheinigung?

Ja. Alle Teilnehmer:innen erhalten nach dem Training eine Teilnahmebescheinigung.

Preise & Kosten

Was ist in den Reisekosten inbegriffen?

Die Reisekosten werden als Pauschale berechnet – abhängig vom Veranstaltungsort und der Anzahl der benötigten Übernachtungen. Die genaue Summe ist Bestandteil des individuellen Angebots, das ich dir zuschicke.

Gibt es Rabatte bei mehreren gebuchten Trainings?

Ja. Bei mehreren gebuchten Trainings oder Folgebuchungen kann ich einen Mengenrabatt anbieten. Das besprechen wir im Video-Call und ich halte das im Angebot fest.

Passt das für euer Team?

Schreib mir einfach – ich antworte in der Regel innerhalb von einem Werktag.
Oder buch direkt einen kostenlosen Video-Call, in dem wir alles Wichtige besprechen.

Jetzt unverbindlich anfragen

Suche