Java for循环常见优化方法案例详解

目录
  • 方法一:最常规的不加思考的写法
  • 方法二:数组长度提取出来
  • 方法三:数组长度提取出来
  • 方法四:采用倒序的写法
  • 方法五:Iterator 遍历
  • 方法六:jdk1.5后的写法
  • 方法七:循环嵌套外小内大原则
  • 方法八:循环嵌套提取不需要循环的逻辑
  • 方法九:异常处理写在循环外面

前言

我们都经常使用一些循环耗时计算的操作,特别是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));
}
  • 优点:不必每次都计算
  • 缺点:
  • 1.m的作用域不够小,违反了最小作用域原则
    2.不能在for循环中操作list的大小,比如除去或新加一个元素

方法三:数组长度提取出来

for (int i = 0, n = list.size(); i < n; i++) {
    System.out.println(list.get(i));
}
  • 优点:不必每次都计算 ,变量的作用域遵循最小范围原则
  • 缺点:
  • 1.m的作用域不够小,违反了最小作用域原则
    2.不能在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) {

}
 catch (Exception e) {

     }
}

正例

try {
   for (int i = 0; i < 10; i++) {
   }
} catch (Exception e) {

}

到此这篇关于Java for循环常见优化方法案例详解的文章就介绍到这了,更多相关Java for循环常见优化方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java优化for循环嵌套的高效率方法

    前几天有人问过我一个问题,就是两个嵌套for循环执行效率的问题,问有什么好的办法替换.当时我想了想,实在想不起来,哎,惭愧!!! 请教了答案,恍然大悟. 比如:两个list中分别装有相同的对象数据. list1中有3万条对象数据. list2中有2万条对象数据(但是对象中的某个属性变量为空).两个list中的id或者其他变量都一模一样.请用最快的方式找出list2中变量为空的那个对象,并且去list1中找出id相同的对象. 或者可以理解成,从list2中找出变量为空的,去list1中找出对应的对

  • Java for循环性能优化实现解析

    这篇文章主要介绍了Java for循环性能优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 完成同样的功能,用不同的代码来实现,性能上可能会有比较大的差别,所以对于一些性能敏感的模块来说,对代码进行一定的优化还是很有必要的.今天就来说一下java代码优化的事情,今天主要聊一下对于for(while等同理)循环的优化,它作为三大结构之一的循环,在我们编写代码的时候会经常用到.循环结构让我们操作数组.集合和其他一些有规律的事物变得更加的方

  • Java通过Fork/Join优化并行计算

    本文实例为大家分享了Java通过Fork/Join优化并行计算的具体代码,供大家参考,具体内容如下 Java代码: package Threads; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.RecursiveAction; /** * Created by Frank */ public class RecursiveActionDemo extends RecursiveAction { sta

  • Java for循环Map集合优化实现解析

    这篇文章主要介绍了Java for循环Map集合优化实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在<for循环实战性能优化>中提出了五种提升for循环性能的优化策略,这次我们在其中嵌套循环优化小循环驱动大循环的基础上,借助Map集合高效的查询性能来优化嵌套for循环. 如果小循环和大循环的集合元素数量分别为M和N,则双层For循环的循环次数是M*N,随着M和N的增长,对性能的影响越来越大.因此,本文考虑进一步优化,使得循环次数变为

  • Java for循环常见优化方法案例详解

    目录 方法一:最常规的不加思考的写法 方法二:数组长度提取出来 方法三:数组长度提取出来 方法四:采用倒序的写法 方法五:Iterator 遍历 方法六:jdk1.5后的写法 方法七:循环嵌套外小内大原则 方法八:循环嵌套提取不需要循环的逻辑 方法九:异常处理写在循环外面 前言 我们都经常使用一些循环耗时计算的操作,特别是for循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当将大大提高效率,下面总结几条for循环的常见优化方式. 首先,我们初始化一个集合 list,如下

  • Java 处理高并发负载类优化方法案例详解

    java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF.尤其是Web2.0的应用,数据库的响应是首先要解决的. 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降.常用的优化措施是M-S(主-从)方式进行同步复制,将查询和操作和分别在不同的服务器上进行操作.我推荐的是M-M-Slaves

  • Java 7大常见排序方法实例详解

    直接插入排序 <code class="language-java hljs ">import java.util.HashMap; public class InsertSort { private static int contrastCount = 0;//对比次数 private static int swapCount = 0;//交换次数 public static void main(String[] args) { System.out.println(&q

  • Java getParameter方法案例详解

    html核心代码 <body> <font size = "5" color ="blue">圆面积计算</font><br> <form action = "home/CCarea" method = "post"> 请输入半径r:<input type="text" name = "radius" value = &q

  • Java Collections.shuffle()方法案例详解

    Java.util.Collections类下有一个静态的shuffle()方法,如下: 1)static void shuffle(List<?> list)  使用默认随机源对列表进行置换,所有置换发生的可能性都是大致相等的. 2)static void shuffle(List<?> list, Random rand) 使用指定的随机源对指定列表进行置换,所有置换发生的可能性都是大致相等的,假定随机源是公平的. 通俗一点的说,就像洗牌一样,随机打乱原来的顺序. 注意:如果给

  • Java BigDecimal中divide方法案例详解

    1.首先说一下用法,BigDecimal中的divide主要就是用来做除法的运算.其中有这么一个方法. public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode) 第一个参数是除数,第二个参数代表保留几位小数,第三个代表的是使用的模式. BigDecimal.ROUND_DOWN:直接省略多余的小数,比如1.28如果保留1位小数,得到的就是1.2 BigDecimal.ROUND_UP:直接进位,比如1.21如

  • Java强制保留两位小数的四种方法案例详解

    方法一:String的format方法(推荐) double f = 111231.5585; System.out.println(String.format("%.2f", f)); 方法二:DecimalFormat的format方法 double f = 111231.5585; DecimalFormat df = new DecimalFormat("#.00"); System.out.println(df.format(f)); 以下内容了解即可,可

  • java设计模式责任链模式原理案例详解

    目录 引言 责任链模式定义 类图 角色 核心 示例代码 1.对请求处理者的抽象 2.对请求处理者的抽象 3.责任链的创建 责任链实现请假案例 案例类图 可扩展性 纯与不纯的责任链模式 纯的责任链模式 不纯的责任链模式 责任链模式主要优点 职责链模式的主要缺点 适用场景 模拟实现Tomcat中的过滤器机制 运行过程如下 分析Tomcat 过滤器中的责任链模式 引言 以请假流程为例,一般公司普通员工的请假流程简化如下: 普通员工发起一个请假申请,当请假天数小于3天时只需要得到主管批准即可:当请假天数

  • Java基础之枚举Enum类案例详解

    一.文章序言 Java中引用类型:数组.类.接口.枚举.注解 枚举这个既熟悉又陌生的东西具体再哪里可以使用呢? 什么是枚举? 枚举是一个引用类型,枚举就是一个规定了取值范围的变量类型. 枚举变量不能使用其他的数据,只能使用枚举中常量赋值.提高程序安全性: //格式: public enum 枚举名{ //枚举的取值范围 //枚举中可以生命方法 } 枚举的使用场景介绍? 1.最常见的情况如星期,相关变量我们会在Java里面重复使用,在这里我们就可以来定义一个叫做"星期"的枚举. publ

  • Java struts2请求源码分析案例详解

    Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定.性能优异.设计成熟的WEB框架. 我这里的struts2源码是从官网下载的一个最新的struts-2.3.15.1-src.zip,将其解压即可.里面的目录页文件非常的多,我们只需要定位到struts-2.3.15.1\src\core

随机推荐