阅读 333

常见For循环写法及优化

引言

我们都经常使用一些循环耗时计算的操作,特别是for循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当将大大提高效率,下面总结几条for循环的常见优化方式。
首先,我们初始化一个集合 list,如下:

方法一:最常规的不加思考的写法

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)); } 复制代码

优点:不必每次都计算 ,变量的作用域遵循最小范围原则
缺点:

  • 结果的顺序会反; 

  • 看起来不习惯,不易读懂

适用场合:与显示结果顺序无关的地方:比如保存之前数据的校验

方法五:Iterator 遍历

for (Iterator<String> it = list.iterator(); it.hasNext();) {     System.out.println(it.next()); } 复制代码

优点:简洁

如果添加或移除元素会直接报java.util.ConcurrentModificationException异常

方法六:jdk1.5后的写法

for (Object o : list) {      System.out.println(o); } 复制代码

优点:简洁结合泛型使用更简洁
缺点:jdk1.4向下不兼容

方法七:lamada写法

list.forEach(i-> System.out.println(i)); 复制代码

优点:代码简洁
缺点:可读性变差

方法七:循环嵌套外小内大原则

for (int i = 0; i < 10; i++) {    for (int j = 0; j < 10000; j++) {      // 逻辑处理    } } 复制代码

原因:

微信图片_20211026093134.jpg

方法八:循环嵌套提取不需要循环的逻辑

//前:  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) {   }


作者:Mr泰迪
链接:https://juejin.cn/post/7023183708790194189


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐