In this two-day advanced course, you’ll learn how to gain a deep understanding of the Java Stream API and how to apply advanced techniques like custom collectors, gatherers, and spliterators effectively.
Day one focuses on advanced collectors and aggregation techniques. You’ll explore how reduce(), groupingBy(), and downstream collectors work – and how to implement your own custom collectors tailored to your specific requirements. You’ll also develop an intuition for when parallel streams makes sense – and where to avoid common pitfalls.
On day two, we dive into the world of spliterators and the new Gatherers API introduced in Java 22. You’ll learn how to efficiently partition large datasets with custom spliterators, and how to build powerful streaming operations with stream gatherers, including use cases like sliding windows and folding.
Hands-on exercises and a final refactoring workshop ensure that you can apply your knowledge directly – with real value for your projects.
👉 Not yet confident with Streams? Then check out Java Streams Basics – Practical Foundations for Beginners.
👉 Want the full spectrum of the Stream API in one go? Then the Combined Training Java Streams Basics + Advanced is the right fit for you.
This course is for experienced Java developers who have already worked with Streams and now want to explore more advanced topics.
If you use Streams regularly, want to improve your code – or are curious about custom Collectors, Gatherers, or Spliterators – this course is for you.
Topics are structured progressively. We alternate between advanced theory, practical use cases, and hands-on exercises – always focused on performance, readability, and maintainability.
Advanced Collectors and Reduce Operations
reduce()
: concepts and practical usepeek()
: when it’s helpful and when notgroupingBy()
, partitioningBy()
counting()
, summingInt()
, averagingDouble()
joining()
Building Custom Collectors
Collector
interface: supplier()
, accumulator()
, combiner()
, finisher()
CONCURRENT
, IDENTITY_FINISH
, UNORDERED
Stream Performance and Spliterator Basics
ORDERED
, SIZED
, SUBSIZED
, CONCURRENT
, etc.Legacy Code Refactoring Workshop
Advanced Stream Patterns and Custom Spliterators
Optional
tryAdvance()
, trySplit()
, estimateSize()
generate()
, iterate()
Stream Gatherers (Java 22+)
Gatherer
interface: integrator()
, combiner()
, finisher()
fold()
, scan()
, windowFixed()
, windowSliding()
Integration and Architecture Patterns
Workshop and Problem Solving
I’m a Java expert with over 20 years of experience – as a developer, architect, CTO, performance coach, and trainer.
I’ve designed enterprise-scale systems for companies like 1&1, IONOS, and ICE Services, modernized legacy apps, and helped teams build robust, maintainable, and high-performance Java software.
With HappyCoders.eu, I’ve built one of the most widely read Java blogs in the German-speaking world. I speak at conferences and Java User Groups – and often receive praise for making complex technical topics easy to understand.
What you’ll get from my courses:
I don’t just teach features – I show you how to develop better software with a deep understanding of Java.