【有趣的实验】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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nick nack_coughing翻译

    nick nack_coughing翻译webrtc中fec的处理机制:获取一帧数据,拆分成多个rtp包,再封装成fec包(fec只有primayblock),发送到网络;之后根据rtp包生成相应数量的fec包(根据冗余度来生成对应数量的包),再发送到网络。需要注意的是:rtpred包和fecred包都是序号连续的。所以判断一个完整帧的依据依然可以使用:获取到首包,获取到尾包,中间包连续。但因为fec的加入,导致所有原始数据的rtp包无法连续(和纯nack不会这样)。所以针对带有fec包的丢包处理机制是这样的:如果一个完整帧里面丢了原始

    2022年8月11日
    5
  • 一步一步写算法(之排序二叉树)[通俗易懂]

    一步一步写算法(之排序二叉树)[通俗易懂]【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing@163.com】   前面我们讲过双向链表的数据结构。每一个循环节点有两个指针,一个指向前面一个节点,一个指向后继节点,这样所有的节点像一颗颗珍珠一样被一根线穿在了一起。然而今天

    2022年7月25日
    12
  • 现有p2p协议简介怎么写_P2P协议穿透

    现有p2p协议简介怎么写_P2P协议穿透原文地址:http://wezly.iteye.com/blog/611630 (一) 常用p2p协议  一、napster:世界上第一个大型的p2p应用网络;中央集中式,倒闭了。  napster,这是当时很火的一种共享服务,主要用于查找mp3,它有一个服务器用于存储mp3文件的链接位置并提供检索,而真正的mp3文件则存放在千千万万的个人电脑上,搜索到的文件通过p2p方式

    2022年10月20日
    2
  • python里for循环用法_python遍历循环

    python里for循环用法_python遍历循环python中使用for循环的方法发布时间:2020-12-0809:35:27来源:亿速云阅读:95作者:小新小编给大家分享一下python中使用for循环的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!python循环方式有两个,一个是while循环,另一个就是for循环,while循环和if条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。…

    2022年8月12日
    8
  • acwing-170. 加成序列(迭代加深)「建议收藏」

    acwing-170. 加成序列(迭代加深)「建议收藏」满足如下条件的序列 X(序列中元素被标号为 1、2、3…m)被称为“加成序列”:X[1]=1X[m]=nX[1]<X[2]<…<X[m−1]<X[m]对于每个 k(2≤k≤m)都存在两个整数 i 和 j (1≤i,j≤k−1,i 和 j 可相等),使得 X[k]=X[i]+X[j]。你的任务是:给定一个整数 n,找出符合上述条件的长度 m 最小的“加成序列”。如果有多个满足要求的答案,只需要找出任意一个可行解。输入格式输入包含多组测试用例。每组测试用例占据一行,包含

    2022年8月8日
    5
  • [IPv6工具] 可用dns和ipv4转v6工具

    [IPv6工具] 可用dns和ipv4转v6工具

    2022年3月7日
    58

发表回复

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

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