在网络上,我发现只有一种方法可以停止迭代方法。通过使用limit()函数。但这会迭代大量的循环。我想停止谓词。
...
Stream.iterate(0, i -> i*2).while(i -> i < MAX)
...
是否可以使用Streams做到这一点?
更新1:使用Java 8
答案 0 :(得分:10)
使用Java-9或更高版本,一种方法是将Stream.takeWhile
用作:
Stream.iterate(1, i -> i * 2) // notice identity value in seed
.takeWhile(i -> i < MAX)
另一种替代方法是使用Stream.iterate
Stream.iterate(1, i -> i < MAX, i -> i * 2)