咱们都常常应用一些循环耗时计算的操作,特地是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技术大本营,获取更多技能与教程。