打破循环或增加计数器的更快方法?

时间:2018-10-06 12:16:37

标签: java loops while-loop counter break

有没有更快的方法来增加计数器或从外部循环中中断?

while(myArrayList.get(i) > myNumber) {
    // some operations

    if(i + 1 < myArrayList.size())
        i++;
    else
        break;
}

4 个答案:

答案 0 :(得分:2)

您需要先检查尺寸,以免耗尽列表末尾并出现错误。

int i;
for (i = 0; i < myArrayList.size(); i++) 
    if (myArrayList.get(i) <= myNumber)
        break;

您可以使用Streams API

int n = IntStream.range(0, myArrayList.size())
                 .filter(i -> myArrayList.get(i) <= myNumber)
                 .findFirst()
                 .orElse(myArrayList.size()); // or -1

答案 1 :(得分:2)

肯定有更好的代码编写方法:

for (int i = 0; i < myArrayList.size(); i++) {
    if (myArrayList.get(i) <= myNumber) break;
    //Some operations...
}

答案 2 :(得分:1)

一个for循环在这里更合适:

int counter = 0

for(int i = 0; i < myArrayList.size(); i++) {
    if(!(myArrayList.get(i) > myNumber)) {
        break;
    }

    counter++;
}

如果意图是计数值大于myNumber,则break可能会排除某些值(除非您知道myArrayList已排序),而循环应该是:

for(int i = 0; i < myArrayList.size(); i++) {
    if(myArrayList.get(i) > myNumber) {
        counter++;
    }
}

答案 3 :(得分:0)

我认为您想从某个索引i开始计数,

int count=0;
    for( ;((i < myArrayList.size()-1) && (myArrayList.get(i) > myNumber));i++){
        count++;
    }