打破循环或递增计数器的更快方法?
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...
}
有没有更快的方法来递增计数器或从外循环中断?
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...
}