Streams 高级

使用 Gatherer 实现自定义中间流操作。

✕ 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();
发现此代码有问题? 告诉我们。
🧩

可组合

Gatherer 与其他流操作组合使用。

🎯

有状态

与 map/filter 不同,Gatherer 可以在元素之间维护状态。

🔀

灵活

可以扩展、收缩或转换流,不受内置操作限制。

旧方式
自定义 Collector
现代方式
gather()
自 JDK
24
难度
高级
流 Gatherer
可用

在 JDK 24 中正式发布(JEP 485,2025 年 3 月)。

Gatherer 是一种新的中间流操作,可以表达内置操作(如 map 和 filter)无法表达的复杂转换。它们支持有状态处理和提前终止。

分享 𝕏 🦋 in