Java8常用循环遍历操作方式的效率对比
其中 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常用循环遍历操作方式的效率对比相关推荐
- java几种遍历方式以及效率对比
几种遍历方式: /*** */ package effectiveUse;import java.util.Iterator; import java.util.List;/*** @author w ...
- 数组常见的遍历循环方法、数组的循环遍历的效率对比
1 遍历数组的方法 1-1.for / while 最普通的循环 效率最高 兼容ie6 tips:for循环更适用于循环的开始和结束已知,循环次数固定的场合:while循环更适合于条件不确定的场合 1 ...
- Java集合篇:Map常用遍历方式 以及 性能对比
一.Map集合常用的遍历方式: 遍历Map集合的常用方式有三种:使用keySet的方式,使用entrySet的方式,使用values()取值的方式,这三种方式中,都有对应的for循环遍历和Iterat ...
- Java遍历Map效率对比
Java遍历Map效率对比 Java 中Map容器的遍历有多种方式,但是不同的方式效率会大有不同,以前没有注意这些细节,随意使用遍历方式在本地可能没有什么影响,但是在项目在高频使用需要特别注意,尽量使 ...
- java8新特性之Steam(告别繁琐的循环遍历)
目录 一.什么是Stream?传统集合遍历循环存在哪些弊端? 二.Stream提供更优的写法 三.获取流的方式 1.根据Collection获取流 2.根据Map获取流 3.根据数组获取流 四.Str ...
- php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析
PHP遍历数组的三种方法及效率对比分析 发布于 2015-03-04 21:55:27 | 129 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext ...
- python最快的循环方法_【转】【Python效率】五种Pandas循环方法效率对比
[Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...
- 循环下标_【转】【Python效率】五种Pandas循环方法效率对比
[Python效率]五种Pandas循环方法效率对比 - 文兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/80880493 正文: 如果你使用过Python及Panda ...
- php遍历数组哪个效率高,PHP遍历数组的三种方法及效率对比分析_php技巧
本文实例分析了PHP遍历数组的三种方法及效率对比.分享给大家供大家参考.具体分析如下: 今天有个朋友问我一个问题php遍历数组的方法,告诉她了几个.顺便写个文章总结下,如果总结不全还请朋友们指出 第一 ...
最新文章
- Ribbon For WPF的使用
- python 列表 元组 字符串
- 数据分析实例(股票分析实例)
- linux下cpu opencl加速,GPU挑战CPU!详解CUDA+OpenCL威力
- 吸尘器电机拆解图解_老少皆宜居家清理更轻松?吉米A6上手把无线吸尘器体验...
- SCU 4439 Vertex Cover(二分图最小覆盖点)题解
- 让AMD在中国发声 APU14技术创新大会首次在华召开
- Matlab——plot polyfit polyval
- MyCat分布式数据库集群架构工作笔记0010---高可用_Mycat主--从复制配置下
- 【Hadoop】安装Apache Hadoop
- 把3000行代码重构成15行的牛逼操作!!!
- GUID和UUID、CLSID、IID 区别及联系
- 【51单片机】STC-ISP软件保姆级烧录教程(以普中A2开发板为例)
- 小程序cms系统服务器选择,如何三分钟为小程序打造管理后台
- mtk刷机显示连接服务器失败,MTK刷机常见错误分析 报错代码解释3
- Resharper插件使用教程汇总
- 自然语言处理NLP开源软件工具包
- firefox插件使用:hackbar
- 信用卡上了“灰名单”怎么办?如何解除?
- 如何写一篇五彩斑斓的博客.append(可爱)