当数量很少的List,几乎任何一种循环遍历方式整体性能都无差别,但是当我们遇到数据量稍大的时候有必要考虑用哪种方式写起来比较高性能,比如我在项目中遇到遍历1000多项,不同的方法,在体验上最明显的就是界面交互时的卡顿,常见的遍历有以下三种:
第一种
for (String s : tests) {
// ....
}
第二种
int size = tests.size();
for (int i = 0; i < size; i++) {
tests.get(i);
}
第三种
Iterator<String> it = tests.iterator();
while(it.hasNext()) {
it.next();
}
多次调试表明,第二种方式在数据量较大时,遍历性能相比较其他两种最好,在界面交互上也没有了一开始的卡顿问题,因为我一开始用的方法是第一种。另外要说的是,第二种方法的循环条件,把size提前计算好,否则的话每次循环都要计算一次,也会影响性能,这个我在帮大学同学调试代码的时候遇到就是没有提前计算好,而且循环量还比较大,就导致运行报oom。