Java 有没有办法用谓词停止Stream.iterate()?

Java 有没有办法用谓词停止Stream.iterate()?,java,java-8,java-stream,Java,Java 8,Java Stream,在web上,我只找到了一种停止迭代方法的方法。通过使用limit()函数。但这会迭代一系列循环。我想使用halt a谓词 ... Stream.iterate(0, i -> i*2).while(i -> i < MAX) ... 。。。 Stream.iterate(0,i->i*2).while(i->i

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

...
Stream.iterate(0, i -> i*2).while(i -> i < MAX)
...
。。。
Stream.iterate(0,i->i*2).while(i->i
有没有一种方法可以通过流来实现呢


更新1:使用Java-9或更高版本使用Java 8,一种方法是使用as:


你真正想要实现什么?你的用例是什么?@RavindraRanwala我想实现一个流,它计算小于某个数字的Fibbonacies,显示你的输入和预期输出。也许有更好的方法可以做到这一点。如果不知道问题的上下文,人们就无法回答问题。也许值得一提的是,这是在Java 9中添加的。Java-8中是否有Stream.iterate.takeWhile()的替代方法这是一种很酷的方法。谢谢但是我使用的是Java8。我将更新我的问题
iterate
中的第三个参数实际上不是
takewhile
的替代参数,因为
takewhile
可以在
map
步骤后应用。当然,对于OP的情况,它可能是好的。@tobias_k是正确的,具体到目前处理整数。如果我可以这么说的话,更可能是
IntStream
Stream.iterate(1, i -> i * 2) // notice identity value in seed
      .takeWhile(i -> i < MAX)
Stream.iterate(1, i -> i < MAX, i -> i * 2)