Streams Продвинутый

Использование Gatherers для пользовательских промежуточных операций Stream.

✕ Java 8
// Sliding window: manual implementation
List<List<T>> windows = new ArrayList<>();
for (int i = 0; i <= list.size()-3; i++) {
    windows.add(
        list.subList(i, i + 3));
}
✓ Java 24+
var windows = stream
    .gather(
        Gatherers.windowSliding(3)
    )
    .toList();
Заметили проблему в этом коде? Сообщите нам.
🧩

Компонуемый

Gatherers сочетаются с другими операциями Stream.

📦

Встроенные операции

windowFixed, windowSliding, fold, scan доступны из коробки.

🔧

Расширяемый

Написание собственных Gatherers для любых промежуточных преобразований.

Старый подход
Пользовательский Collector
Современный подход
gather()
Начиная с JDK
24
Сложность
Продвинутый
Stream Gatherers
Доступно

Финализировано в JDK 24 (JEP 485, март 2025).

Gatherers — это новая промежуточная операция Stream, позволяющая выражать сложные преобразования, такие как скользящие окна, группы фиксированного размера и операции сканирования, которые были невозможны со стандартными операциями Stream.