lamda中stream的forEach与for循环对比

lamda中stream的forEach与for循环对比对比方式将一个字符串数组进行输出的方式:代码publicstaticvoidmain(String[]args)throwsIOException{intn=500000;String[]strings=newString[n];LongstreamStart=System.currentTimeMillis();Arrays.stream(strings).forEach(System

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

Jetbrains全家桶1年46,售后保障稳定

对比方式

  • 将一个字符串数组进行输出的方式:
  • 代码

    public static void main(String[] args) throws IOException { 
   
        int n=500000;
        String[] strings = new String[n];
        Long streamStart = System.currentTimeMillis();
        Arrays.stream(strings).forEach(System.out::println);
        Long streamEnd = System.currentTimeMillis();
        for (int i = 0; i < n; i++) { 
   
            System.out.println();
        }
        Long forEnd = System.currentTimeMillis();

        System.out.println("stream forEach 运行时间:" + (streamEnd - streamStart));
        System.out.println("for循环 运行时间:" + (forEnd - streamEnd));

    }

Jetbrains全家桶1年46,售后保障稳定

  • 数据运行表格
数组长度 for循环(ms) stream的forEach(ms)
100 1 31
1000 6 52
5000 22 62
10000 33 89
20000 75 168
50000 249 276
80000 534 432
100000 696 454
500000 904 2704
1000000 1740 3616
  • 截图(按照表格截图)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1000组数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
1000000
在这里插入图片描述
500000
在这里插入图片描述

总结

循环大概在50000大小的时候for循环就开始慢慢运行时间大于forEach,在50000数据之前都是for循环优势。但是当我直接加到1000000大小时发现for循环的速度优势又回来了,又测试了500000发现依然是for循环优势。
所以大概率下,几万几万数据时forEach速度是领先的。小数据和极大数据下for循环领先,所以推荐使用for循环,一般业务中很少有几万数据去循环。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在Eclipse在使用JUnit4单元测试(0基础知识)

    在Eclipse在使用JUnit4单元测试(0基础知识)

    2021年12月17日
    43
  • Java高级工程师薪资多少?如何才能成为一个优秀的高级程序员?

    Java高级工程师薪资多少?如何才能成为一个优秀的高级程序员?Java语言在2015年首次荣登编程语言热门榜的榜首,2018年再度登上榜首,下面不妨让我们来看看Java开发工程师的薪资待遇如何。以上是三张在猎聘网上随便找的三张截图,可见高级工程师年薪都是在30-60万。那么重点来了,怎样才算是一个高级工程师呢?你是否也能成为一个优秀的高级工程师?工程师必须掌握的知识点是那些?人人都想成为高薪架构师,为什么现在高…

    2022年7月8日
    36
  • oracle number类型 p、s参数说明[通俗易懂]

    oracle number类型 p、s参数说明[通俗易懂] oraclenumber类型采用科学计数法表示,p表示有效数字的个数,s表示精度;如果定义字段类型为number(p,s)则该字段所能表示的最大正数是(10p-1)*10-s最小负数-(10p-1)*10-s;所有该范围之间的数字均可根据精度四舍五入后插入该字段;否则将会报错。  

    2022年7月24日
    8
  • cardview属性_RecyclerView

    cardview属性_RecyclerViewCardView是用于实现卡片式布局效果的重要控件,实际上也是一个frameLayout,只是额外提供了圆角和阴影,看上去有立体效果。效果如下:<?xmlversion=”1.0″encoding=”utf-8″?><androidx.cardview.widget.CardViewxmlns:android=”http://schemas.android.com/apk/res/android”xmlns:app=”http:…

    2022年10月11日
    4
  • pytest skipif_pytest失败重跑

    pytest skipif_pytest失败重跑前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月31日
    10
  • h2数据库如何连接_怎样远程连接数据库

    h2数据库如何连接_怎样远程连接数据库H2数据库支持如下3种连接模式: 内嵌模式(通过JDBC进行本地连接,应用和数据库在同一个JVM中) 服务器模式(通过JDBC或ODBC或TCP/IP进行远程连接) 混合模式(同时支持本地和远程连接)数据库连接URL说明:TopicURLFormatandExamples嵌入式(本地)连接jdb

    2022年10月11日
    5

发表回复

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

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