java 比较几种常见循环方式的优劣

简介:

我们常用for循环,foeach,while等作为循环list或者数组的方式,但是大家有没有真正考虑过他们之间的性能差异呢,以下我来给大家分析下:      

  List<String> list = new ArrayList<String>();

        for(int i=0;i<5000000;i++) {

             list.add( "grefr");

       }

      

        long time1 = System.nanoTime();

        for(int i = 0;i<5000000;i++) {

             String str = list.get(i);

       }

        long time2 = System.nanoTime();

      

       System. out.println("for循环使用时间" +(time2-time1));

      

        long time3 = System.nanoTime();

        for(String str:list) {

       }

        long time4 = System.nanoTime();

      

       System. out.println("foreach循环使用时间" +(time4-time3));

      

        long time5 = System. nanoTime();

       Iterator<String> iterator = list.iterator();

        while(iterator.hasNext()) {

             String str = iterator.next();

       }

        long time6 = System.nanoTime();

      

       System. out.println("迭代器循环使用时间" +(time6-time5 ));

      

       long time7 = System.nanoTime();

     

       for( Iterator<String> iterator2 = list.iterator();iterator2.hasNext();) {

         String str = iterator2.next();

       }

        long time8 = System.nanoTime();

      

       System. out.println("for改装的迭代器循环使用时间" +(time8-time7));

            

      

        long time9 = System. nanoTime();

        int i = -1;

        while(i++<list.size()-1) {

             String str = list.get(i);

       }

        long time10 = System. nanoTime();

      

       System. out.println("while循环使用时间" +(time10-time9));

这段代码执行的结果是:

for循环使用时间           84835391

foreach循环使用时间       171477032

迭代器循环使用时间         175461419

for改装的迭代器循环使用时间 168014315

while循环使用时间         112974805


很显然,在遍历List时for循环的遍历效率要更高

但是在下面的遍历中,

                         int num = 1000000;

             long time1 = System.nanoTime();

             for(int i = 0;i<num;i++ ) {

                   

            }

             long time2 = System.nanoTime();

            System. out.println(time2-time1);

            

             long time3 = System.nanoTime();

             while(num-->0) {

                  

            }

             long time4 = System.nanoTime();

            System. out.println(time4-time3);


运行结果如下:


for循环执行时间为:  7163405

while循环执行时间为:3595701



特别说明:尊重作者的劳动成果,转载请注明出处哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt224
相关文章
|
1月前
|
Java
Java周期循环的代码可以如此简单
Java周期循环的代码可以如此简单
26 2
|
3月前
|
Java
Java中for循环的六种形态
Java中for循环的六种形态
23 0
|
4月前
|
Java C语言
Java选择与循环
Java选择与循环
35 0
|
4月前
|
算法 Java
7.Java判断和循环+面试相关力扣算法题详解
7.Java判断和循环+面试相关力扣算法题详解
130 1
|
6月前
|
Java 程序员
黑马程序员Java零基础视频教程笔记-判断和循环 1
黑马程序员Java零基础视频教程笔记-判断和循环
39 0
|
6月前
|
Java
java循环
Java中最常用的循环是for循环,for循环的语法如下: for (声明并初始化变量; 判断循环条件; 改变变量的初始值) { 循环的内容 ; 1.声明并初始化变量的操作,在自身循环中只会执行一次 2.每次循环之前,都会判断条件是否成立,只有当条件为true才会执行,如果条件为false则循环结束 在Java中,除了for循环外,还有while循环和do-while循环。while循环的语法如下: while (条件) { 循环的内容 ; } do-while循环的语法如下: do { 循环的内容 ; } while (条件); 这三种循环都可以用来重复执行一段代码,但是在
37 1
|
4月前
|
Java
8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏
8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏
78 1
|
26天前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
90 3
|
30天前
|
Java
java使用循环案例—
java使用循环案例—
9 0
|
1月前
|
Java 开发者 Spring
【Java】Spring循环依赖:原因与解决方法
【Java】Spring循环依赖:原因与解决方法
27 0