ArrayList<String> arr = new ArrayList<String>();
// add elements into arr
for (int i = 0; i < arr.size(); i++) {
// opt
}
//and
for (int i = 0, len = arr.size(); i < len; i++) {
// opt
}
这两种for的写法是否真的有性能差异呢?
按理说上边的写法会在每次循环都调用arr.size()方法 这样会不会稍微影响性能呢?性能优化Java
// add elements into arr
for (int i = 0; i < arr.size(); i++) {
// opt
}
//and
for (int i = 0, len = arr.size(); i < len; i++) {
// opt
}
这两种for的写法是否真的有性能差异呢?
按理说上边的写法会在每次循环都调用arr.size()方法 这样会不会稍微影响性能呢?性能优化Java
你可以把 arr.size()放在循序外嘛
int size = arr.size();
for(int i = 0 ; i < size ;i++){
...
}
这样可读性还稍微好些!
如果有额外线程也在操作这个list,比如做了remove操作,那么如果你提前把size的值取出来而不放在循环里每次都取,那么会报出数组越界的异常,因为循环的时候,list的大小已经改变,但你没有每次重新取
第二种,size直接赋值后就直接判断,不用计算呢