【有趣的实验】JAVA 遍历数组的几种方式的耗时对比「建议收藏」

【有趣的实验】JAVA 遍历数组的几种方式的耗时对比「建议收藏」JAVA遍历数组的几种方式的耗时对比

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、前言

出于对遍历方式的耗时想法,是普通for循环、fori、foreach、迭代器 iterator、还是steam流的形式哪种耗时更少呢?

首先添加一个List 集合,这边采用ArraryList

        ArrayList<Integer> list = new ArrayList<Integer>();
        list = new ArrayList<Integer>();
        long startTime = System.currentTimeMillis();
        for (int i = 0; i < 10000000; i++) {
            list.add(i);
        }

下面是几种方式

1.1、普通for循环

    long startTime = System.currentTimeMillis();
    for (int i = 0; i < list.size(); i++) {
        int a = 0;
        a += list.get(i);
    }
    System.out.println("耗时:" + (System.currentTimeMillis() - startTime));

1.2 增强for循环

    long startTime = System.currentTimeMillis();
    for (Integer itr : list) {
        int a = 0;
        a += itr;
    }
    System.out.println("增强for耗时:" + (System.currentTimeMillis() - startTime));

 1.3 迭代器

        long startTime3 = System.currentTimeMillis();
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            int xx=0;
            Integer next = iterator.next();
            xx += next;
        }
        System.out.println("迭代器耗时:" + (System.currentTimeMillis() - startTime3));

1.4 forEach

       long startTime4 = System.currentTimeMillis();
        list.forEach(integer -> {
            int xx=0;
            xx += integer;
        });
        System.out.println("foreach耗时:" + (System.currentTimeMillis() - startTime4));

1.5 stream流

        long startTime5 = System.currentTimeMillis();
        list.stream().forEach(integer -> {
            int xx=0;
            xx += integer;
        });
        System.out.println("stream流耗时:" + (System.currentTimeMillis() - startTime5));

一千万数据在耗时情况如下:

【有趣的实验】JAVA 遍历数组的几种方式的耗时对比「建议收藏」

 可以看到普通for循环时间更少。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191885.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月23日 下午2:22
下一篇 2026年1月23日 下午3:01


相关推荐

  • PHP:2019年你面试会遇到的题目及解答(汇总)

    PHP:2019年你面试会遇到的题目及解答(汇总)2019 年 PHP 面试常用题汇总及答案如下 1 如何防止 form 表单重复提交 2 Cookie 被禁用了 session 还可以使用吗 3 你了解的或者用过的版本控制工具有哪些 简单说明一下 CVS SVN vss git4 单例模式的优点 如何实现 5 单引号和双引号的区别是什么 1 双引号可以解析变量 单引号不能解析变量 2 双引号和单引号可以互相嵌套 3 双引号当中的变量可以

    2026年3月27日
    1
  • 史丰收速算 (蓝桥杯)

    史丰收速算 (蓝桥杯)题目描述 史丰收速算法的革命性贡献是 从高位算起 预测进位 不需要九九表 彻底颠覆了传统手算 速算的核心基础是 1 位数乘以多位数的乘法 其中 乘以 7 是最复杂的 就以它为例 因为 1 7 是个循环小数 0 如果多位数超过 就要进 1 同理 2 7 3 7 6 7 也都是类似的循环小数 多位数超过 n 7 就要进 n 下面的程序模拟了史丰收速算法中乘以 7 的运

    2026年3月19日
    2
  • ESP32开发之旅——RC522模块的使用

    ESP32开发之旅——RC522模块的使用ESP32开发之旅——RC522模块的使用前言在本文中,您将学会如何使用ESP32连接RFID模块RC522,本文提供了简单的示例供学习参考。需要注意的是,本文中的ESP32是使用MicroPython进行开发的,(同时ESP8266也可按照本文进行开发)。本文中出现的代码是从GitHub开源库中搬运而来,GitHub链接已放在文尾。RFID-RC522模块的简单介绍​ 射频识别RFID(RadioFrequencyIdentification)是一种无线数据传输系统,用于在标签和读取

    2022年7月14日
    29
  • java webservice 实例

    java webservice 实例javawebservice实例 byhgwayen实验目的1.实现一个具有WebService功能的分布式对象类,能够实现求两个整数的最大值的功能。2.在另一台计算机(虚拟机)上,编写客户端程序,通过WebService技术访问远程的基于WebService的分布式对象Max,达到求两个整数的最大值的功能。一、创建并运行HelloWorldWebService.java。1.在classpath路径下新建/rs_midtest、/rs_

    2022年7月21日
    13
  • Eclipse汉化教程——只用于学习用途

    Eclipse汉化教程——只用于学习用途Eclipse2019版本汉化教程首先这里我已经做了汉化了,但是不影响各位学习怎么汉化,首先打开工具栏的帮助按钮,选中倒数第四个按钮,如下图所示(看不懂英文的朋友不要紧,对照图上位置即可),如下图所示:然后会打开这个页面然后打开这个网址(默认是英文的)语言包地址(点击左边这个蓝色的字体)出现下面的页面复制图中标记的地址注意官网这个地址中,如果用谷歌浏览器翻译后:号用的是中…

    2022年5月3日
    47
  • MySQL添加、修改、删除索引以及索引的使用场景

    MySQL添加、修改、删除索引以及索引的使用场景索引是查询优化最主要的方式 查询方式 一种是 全表扫描 一种是 利用数据表上建立的所以进行扫描 1 索引类型分类 UNIQUE 唯一索引 不可以出现相同的值 可以有 NULL 值 加快查询速度 并且可以限制列值的唯一性 允许为空 唯一索引包括联合唯一索引 多列形成的唯一索引 这些列可以唯一确定一条表记录 可以为空 INDEX 普通索引 允许出现相同的索引内容 加快查询速度 PROMARYKEY 主键索引 不允许出现相同的值 主键

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号