提问者:小点点

有没有办法阻止Stream。使用谓词iterate()?[副本]


在web上,我只找到了一种停止迭代方法的方法。通过使用limit()函数。但这会迭代一个具体的循环数。我想用它来停止一个谓词。

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

有没有办法用Streams做到这一点?

更新1:使用Java 8


共1个答案

匿名用户

使用Java-9或以上,一种方法是使用Stream.takeWhile作为:

Stream.iterate(1, i -> i * 2) // notice identity value in seed
      .takeWhile(i -> i < MAX)

另一种方法是使用Stream.interate

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