代码对比
✕ Java 8
List<Integer> result = new ArrayList<>();
for (int n : sorted) {
if (n >= 100) break;
result.add(n);
}
// no stream equivalent in Java 8
✓ Java 9+
var result = sorted.stream()
.takeWhile(n -> n < 100)
.toList();
// or: .dropWhile(n -> n < 10)
发现此代码有问题? 告诉我们。
为什么现代方式更好
短路
一旦谓词失败立即停止处理。
声明式
清晰地表达获取/丢弃语义。
可链式调用
与其他流操作无缝组合。
旧方式
手动循环
现代方式
takeWhile/dropWhile
自 JDK
9
难度
入门
JDK 支持
流的 takeWhile / dropWhile
可用
自 JDK 9 起广泛可用(2017 年 9 月)
工作原理
takeWhile() 在谓词为 true 时返回元素,在第一次失败时停止。dropWhile() 在谓词为 true 时跳过元素,然后返回其余所有元素。
相关文档