Java8是否提供了一种基于特定条件重复函数的好方法?

Java8是否提供了一种基于特定条件重复函数的好方法?,java,loops,while-loop,java-8,Java,Loops,While Loop,Java 8,我使用的是旧式,而循环如下: int i = 1, n = 5; while(i <= n) { if (doSomething()) { break; } i++; } inti=1,n=5; 而(i您可以使用和短路终端操作来完成。当doSomething()方法返回true时,流管道的执行将终止 IntStream.range(1,5) .filter(i -> doSomething()) .fin

我使用的是旧式
,而
循环如下:

int i = 1, n = 5;
while(i <= n) {
    if (doSomething()) { 
        break;
    }
    i++;
}
inti=1,n=5;
而(i您可以使用和短路终端操作来完成。当
doSomething()
方法返回true时,流管道的执行将终止

IntStream.range(1,5)
         .filter(i -> doSomething())
         .findFirst();
这更整洁:

for (int i = 0; i < 5 && !doSomething(); i++);
for(inti=0;i<5&&!doSomething();i++);

尽管您提到了Java 8,但如果您要使用Java 9或更高版本,并且需要知道循环执行的次数,请按照以下步骤操作:

long count=IntStream.range(1,6)
.takeWhile(i->!doSomething())//循环继续,直到doSomething为true
.count();
takeWhile
是在Java 9中引入的。

简单的旧方法:


while(i)while循环的“不好”是什么?它有效,它是可以理解的,…?在您的示例中,doSomething不依赖于i,因此它在每次迭代时都返回true或false。您应该更具体地了解实际上下文…您需要知道重复结束时i
的值是什么吗?
(int i=1,n=5;循环完成时,i但是
i
不在范围内。