咱们都常常应用一些循环耗时计算的操作,特地是 for 循环,它是一种反复计算的操作,如果解决不好,耗时就比拟大,如果解决书写切当将大大提高效率,上面总结几条 for 循环的常见优化形式。
首先,咱们初始化一个汇合 list,如下:
List<String> list = new ArrayList<String>();
办法一:最惯例的不加思考的写法
for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));
}
长处:较常见,易于了解
毛病:每次都要计算list.size()
办法二:数组长度提取进去
int m = list.size();
for (int i = 0; i < m; i++) {System.out.println(list.get(i));
}
长处:不用每次都计算
毛病:
m 的作用域不够小,违反了最小作用域准则
不能在 for 循环中操作 list 的大小,比方除去或新加一个元素
办法三:数组长度提取进去
for (int i = 0, n = list.size(); i < n; i++) {System.out.println(list.get(i));
}
长处:不用每次都计算,变量的作用域遵循最小范畴准则
毛病:
m 的作用域不够小,违反了最小作用域准则
不能在 for 循环中操作 list 的大小,比方除去或新加一个元素
办法四:采纳倒序的写法
for (int i = list.size() - 1; i >= 0; i--) {System.out.println(list.get(i));
}
长处:不用每次都计算,变量的作用域遵循最小范畴准则
毛病:1、后果的程序会反 2、看起来不习惯,不易读懂
实用场合:与显示后果程序无关的中央:比方保留之前数据的校验
办法五:Iterator 遍历
for (Iterator<String> it = list.iterator(); it.hasNext();) {System.out.println(it.next());
}
长处:简洁
办法六:jdk1.5 后的写法
for (Object o : list) {System.out.println(o);
}
长处:简洁联合泛型应用更简洁
毛病:jdk1.4 向下不兼容
办法七:循环嵌套外小内大准则
for (int i = 0; i < 10; i++) {for (int j = 0; j < 10000; j++) {}}
起因
办法八:循环嵌套提取不须要循环的逻辑
// 前:int a = 10, b = 11;
for (int i = 0; i < 10; i++) {i = i * a * b;}
// 后:int c = a * b;
for (int i = 0; i < 10; i++) {i = i * c;}
办法九:异样解决写在循环里面
反例
for (int i = 0; i < 10; i++) {try {} catch (Exception e) {}}
正例
try {for (int i = 0; i < 10; i++) {}} catch (Exception e) { }
以上就是本次分享的全部内容,当初想要学习编程的小伙伴欢送关注 Python 技术大本营,获取更多技能与教程。