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

Quicker way to break loop or increment counter?

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

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

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

这里使用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++;
    }
}

您需要先检查大小以避免 运行 超出列表末尾并出现错误。

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

我想你想从某个索引开始计数 i,

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

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

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