Streams 中级

使用谓词停止迭代——流形式的 for 循环。

✕ Java 8
Stream.iterate(1, n -> n * 2)
    .limit(10)
    .forEach(System.out::println);
// can't stop at a condition
✓ Java 9+
Stream.iterate(
    1,
    n -> n < 1000,
    n -> n * 2
).forEach(IO::println);
// stops when n >= 1000
发现此代码有问题? 告诉我们。
🎯

自然终止

根据条件停止,而非任意 limit。

📖

for 循环的流形式

for(int i=0; i<10; i++) 对应的流形式。

🔗

可链式调用

与 map、filter 等其他流操作链式调用。

旧方式
iterate + limit
现代方式
iterate(seed, pred, op)
自 JDK
9
难度
中级
带谓词的 Stream.iterate()
可用

自 JDK 9 起广泛可用(2017 年 9 月)

三参数 Stream.iterate(seed, hasNext, next) 像 for 循环一样工作:从种子值开始,在谓词成立时继续,并按步骤函数递进。

分享 𝕏 🦋 in