其中 parallelStream() 为多线程遍历, 顺序会打乱, 根据适合场景使用

场景: 少量数据, 遍历数据修改操作

采用1000条数据遍历进行修改对象内容

 @Testpublic void test02() {List<TestObject> list = new ArrayList<>();for (int i = 0; i < 1234567; i++) {list.add(new TestObject());}TimeInterval timer = DateUtil.timer();for (int i = 0; i < list.size(); i++) {list.get(i).setName(RandomUtil.randomString(64));}log.info("fori: 消耗 {}ms", timer.intervalRestart());for (TestObject testObject : list) {testObject.setName(RandomUtil.randomString(64));}log.info("for(:): 消耗 {}ms", timer.intervalRestart());list.forEach(item -> item.setName(RandomUtil.randomString(64)));log.info("list.forEach(): 消耗 {}ms", timer.intervalRestart());list.stream().forEach(item -> item.setName(RandomUtil.randomString(64)));log.info("list.stream().forEach(): 消耗 {}ms", timer.intervalRestart());list.stream().forEachOrdered(item -> item.setName(RandomUtil.randomString(64)));log.info("list.stream().forEachOrdered(): 消耗 {}ms", timer.intervalRestart());list.parallelStream().forEach(item -> item.setName(RandomUtil.randomString(64)));log.info("list.parallelStream().forEach(): 消耗 {}ms", timer.intervalRestart());list.parallelStream().forEachOrdered(item -> item.setName(RandomUtil.randomString(64)));log.info("list.parallelStream().forEachOrdered(): 消耗 {}ms", timer.intervalRestart());}

场景: 大量数据, 遍历数据修改操作

采用100多万条数据遍历进行修改对象内容

    @Testpublic void test02() {List<TestObject> list = new ArrayList<>();for (int i = 0; i < 1000; i++) {list.add(new TestObject());}TimeInterval timer = DateUtil.timer();for (int i = 0; i < list.size(); i++) {list.get(i).setName(RandomUtil.randomString(64));}log.info("fori: 消耗 {}ms", timer.intervalRestart());for (TestObject testObject : list) {testObject.setName(RandomUtil.randomString(64));}log.info("for(:): 消耗 {}ms", timer.intervalRestart());list.forEach(item -> item.setName(RandomUtil.randomString(64)));log.info("list.forEach(): 消耗 {}ms", timer.intervalRestart());list.stream().forEach(item -> item.setName(RandomUtil.randomString(64)));log.info("list.stream().forEach(): 消耗 {}ms", timer.intervalRestart());list.stream().forEachOrdered(item -> item.setName(RandomUtil.randomString(64)));log.info("list.stream().forEachOrdered(): 消耗 {}ms", timer.intervalRestart());list.parallelStream().forEach(item -> item.setName(RandomUtil.randomString(64)));log.info("list.parallelStream().forEach(): 消耗 {}ms", timer.intervalRestart());list.parallelStream().forEachOrdered(item -> item.setName(RandomUtil.randomString(64)));log.info("list.parallelStream().forEachOrdered(): 消耗 {}ms", timer.intervalRestart());}

场景: 查询数据库后赋值

分页数据100条, 采用遍历数据每条查询数据库的方式一个一个赋值

    @Testpublic void test02() {List<TestObject> list = new ArrayList<>();for (int i = 0; i < 100; i++) {list.add(new TestObject());}TimeInterval timer = DateUtil.timer();for (int i = 0; i < list.size(); i++) {list.get(i).setName(accountService.getById("1").getUserName());}log.info("fori: 消耗 {}ms", timer.intervalRestart());for (TestObject testObject : list) {testObject.setName(accountService.getById("1").getUserName());}log.info("for(:): 消耗 {}ms", timer.intervalRestart());list.forEach(item -> item.setName(accountService.getById("1").getUserName()));log.info("list.forEach(): 消耗 {}ms", timer.intervalRestart());list.stream().forEach(item -> item.setName(accountService.getById("1").getUserName()));log.info("list.stream().forEach(): 消耗 {}ms", timer.intervalRestart());list.stream().forEachOrdered(item -> item.setName(accountService.getById("1").getUserName()));log.info("list.stream().forEachOrdered(): 消耗 {}ms", timer.intervalRestart());list.parallelStream().forEach(item -> item.setName(accountService.getById("1").getUserName()));log.info("list.parallelStream().forEach(): 消耗 {}ms", timer.intervalRestart());list.parallelStream().forEachOrdered(item -> item.setName(accountService.getById("1").getUserName()));log.info("list.parallelStream().forEachOrdered(): 消耗 {}ms", timer.intervalRestart());}

Java8常用循环遍历操作方式的效率对比相关推荐

  1. java几种遍历方式以及效率对比

    几种遍历方式: /*** */ package effectiveUse;import java.util.Iterator; import java.util.List;/*** @author w ...

  2. 数组常见的遍历循环方法、数组的循环遍历的效率对比

    1 遍历数组的方法 1-1.for / while 最普通的循环 效率最高 兼容ie6 tips:for循环更适用于循环的开始和结束已知,循环次数固定的场合:while循环更适合于条件不确定的场合 1 ...

  3. Java集合篇:Map常用遍历方式 以及 性能对比

    一.Map集合常用的遍历方式: 遍历Map集合的常用方式有三种:使用keySet的方式,使用entrySet的方式,使用values()取值的方式,这三种方式中,都有对应的for循环遍历和Iterat ...

  4. Java遍历Map效率对比

    Java遍历Map效率对比 Java 中Map容器的遍历有多种方式,但是不同的方式效率会大有不同,以前没有注意这些细节,随意使用遍历方式在本地可能没有什么影响,但是在项目在高频使用需要特别注意,尽量使 ...

  5. java8新特性之Steam(告别繁琐的循环遍历)

    目录 一.什么是Stream?传统集合遍历循环存在哪些弊端? 二.Stream提供更优的写法 三.获取流的方式 1.根据Collection获取流 2.根据Map获取流 3.根据数组获取流 四.Str ...

  6. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析

    PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...

  7. python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

  8. 循环下标_【转】【Python效率】五种Pandas循环方法效率对比

    [Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...

  9. php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析_php技巧

    本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一 ...

最新文章

  1. Ribbon For WPF的使用
  2. python 列表 元组 字符串
  3. 数据分析实例(股票分析实例)
  4. linux下cpu opencl加速,GPU挑战CPU!详解CUDA+OpenCL威力
  5. 吸尘器电机拆解图解_老少皆宜居家清理更轻松?吉米A6上手把无线吸尘器体验...
  6. SCU 4439 Vertex Cover(二分图最小覆盖点)题解
  7. 让AMD在中国发声 APU14技术创新大会首次在华召开
  8. Matlab——plot polyfit polyval
  9. MyCat分布式数据库集群架构工作笔记0010---高可用_Mycat主--从复制配置下
  10. 【Hadoop】安装Apache Hadoop
  11. 把3000行代码重构成15行的牛逼操作!!!
  12. GUID和UUID、CLSID、IID 区别及联系
  13. 【51单片机】STC-ISP软件保姆级烧录教程(以普中A2开发板为例)
  14. 小程序cms系统服务器选择,如何三分钟为小程序打造管理后台
  15. mtk刷机显示连接服务器失败,MTK刷机常见错误分析 报错代码解释3
  16. Resharper插件使用教程汇总
  17. 自然语言处理NLP开源软件工具包
  18. firefox插件使用:hackbar
  19. 信用卡上了“灰名单”怎么办?如何解除?
  20. 如何写一篇五彩斑斓的博客.append(可爱)

热门文章

  1. 网络问题 – bitbucket同步数据
  2. 浅拷贝和深拷贝(谈谈java中的clone)
  3. Pytest和unittest的对比
  4. jQuery.Deferred对象
  5. (12)筋斗云案例(导航栏醒目显示跟随)
  6. What is hosts?
  7. 2016校招面试题汇总
  8. 索尼随身听体积小吗?
  9. VSCode 使用教程--编写调试C/C++程序
  10. Caliburn.Micro 杰的入门教程3,事件和参数