代码对比
✕ 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
难度
高级
JDK 支持
流 Gatherer
可用
在 JDK 24 中正式发布(JEP 485,2025 年 3 月)。
工作原理
Gatherer 是一种新的中间流操作,可以表达内置操作(如 map 和 filter)无法表达的复杂转换。它们支持有状态处理和提前终止。
相关文档