有没有一种方法可以停止带有谓词的Stream.iterate()?

时间:2019-02-08 10:06:17

标签: java java-8 java-stream

在网络上,我发现只有一种方法可以停止迭代方法。通过使用limit()函数。但这会迭代大量的循环。我想停止谓词。

...
Stream.iterate(0, i -> i*2).while(i -> i < MAX)
...

是否可以使用Streams做到这一点?

更新1:使用Java 8

1 个答案:

答案 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)