JDK 17 常见的for循环优化方式

简介: JDK 17 常见的for循环优化方式

目录



前言


我们都经常使用一些循环耗时计算的操作,特别是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++) {
   }
}


原因


79.png


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


 //前:
 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) {
}
目录
相关文章
|
8月前
|
存储 监控 Java
JDK10优化了哪些功能以及新增了哪些特性功能|JDK各个版本的特性分析
JDK10优化了哪些功能以及新增了哪些特性功能|JDK各个版本的特性分析
|
8月前
|
编解码 移动开发 Java
JDK9优化了哪些功能以及新增了哪些特性功能|JDK各个版本的特性分析
JDK9优化了哪些功能以及新增了哪些特性功能|JDK各个版本的特性分析
|
3月前
|
监控 Java 开发者
JDK 9新特性深度解析:垃圾回收器的改进与优化
本文将深入探讨JDK 9中垃圾回收器的改进与优化。随着Java语言的不断发展,垃圾回收器作为内存管理的核心组件也经历了多次迭代和改进。JDK 9引入了新的垃圾回收器,旨在提高内存回收的效率和性能,降低垃圾回收的停顿时间。本文将详细介绍这些改进,以及如何在实际应用中利用这些改进来提高应用程序的性能和稳定性。
|
Java
阅读JDK源码后,我有了优化它的冲动...
最近在看concurrent包下线程池的源码,当我看到ThreadPoolExecutor类的时候,发现了JDK源码的一个问题。以下是ThreadPoolExecutor类的addWorker方法的代码片段:
96 0
阅读JDK源码后,我有了优化它的冲动...
|
缓存 Java
感悟优化——Netty对JDK缓冲区内存池零拷贝的改造
NIO中缓冲区是数据传输的基础,JDK通过ByteBuffer实现,Netty框架中并未采用JDK原生的ByteBuffer,而是构造了ByteBuf。 ByteBuf对ByteBuffer做了大量的优化,比如说内存池,零拷贝,引用计数(不依赖GC),本文主要是分析这些优化,学习这些优化思想,学以致用,在实际工程中,借鉴这些优化方案和思想。
3285 0
|
Java
从JDK源码角度看并发锁的优化
        在CLH锁核心思想的影响下,JDK并发包以CLH锁作为基础而设计,其中主要是考虑到CLH锁更容易实现取消与超时功能。比起原来的CLH锁已经做了很大的改造,主要从两方面进行了改造:节点的结构与节点等待机制。
1108 0
|
3天前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
28 0
|
7天前
|
弹性计算 运维 Java
一键安装二进制JDK
【4月更文挑战第30天】
8 0
|
7天前
|
关系型数据库 MySQL 应用服务中间件
centos7在线安装jdk1.8+tomcat+mysql8+nginx+docker
现在,你已经成功在CentOS 7上安装了JDK 1.8、Tomcat、MySQL 8、Nginx和Docker。你可以根据需要配置和使用这些服务。请注意,安装和配置这些服务的详细设置取决于你的具体需求。
26 2
|
9天前
|
Java Windows
java——安装JDK及配置解决常见问题
java——安装JDK及配置解决常见问题