Java Map 的 forEach 函数遍历
入职新公司,查看代码规范的时候,看到一条:
“Map 遍历慎用 Map.forEach()”
举了一个内网例子:一个 Map<String, ObjectDTO> 元素大小为 7 ,遍历:
使用 forEach:耗时 100ms 左右
使用 iterator:耗时 1ms 左右
自己以 HashMap 为例在本地做了一下测试,确实直接使用迭代器 Iterator 遍历速度比 forEach 快很多。但是测试过程发现, forEach 只是第一次运行的时候会慢一些,后面再次执行速率和Iterator相差无几;而且假如使用了 forEach() 遍历了 Map<String,X>,那么后续使用 forEach() 遍历 Map<Y,Z> 速度也会很快(X,Y,Z 为任意类型)。个人猜测应该是Java JIT 对 forEach() 代码做了处理,是不是把它搞成了热点代码。
后来搜了一下,发现一篇文章:为java8的foreach正名,里面测试就先给 forEach 代码进行了预热。如果一定要JVM预热一次的话,那是不是第一次执行 forEach 代码速率较慢从而可能拖慢一次请求,但由上面个人测试来看应该只会慢一次。感觉这个还是有点意思的,记录一下吧。
Java Map 的 forEach 函数遍历相关推荐
- java map foreach_java foreach遍历map集合的方法案例
java foreach遍历map集合的方法是java jdk1.8时出现的新方法,使用了Interface BiConsumer接口来实现,T代表map集合key的类型,U代表map集合Value的 ...
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...
- Java 8 Stream Api 中的 peek、map、foreach区别
#1. 前言 我在Java8 Stream中讲述了 Java 8 Stream API 的一些内容.今天再看一下peek.map.foreach区别. 2. peek peek 操作接收的是一个 Co ...
- hashmap java 便利_java HashMap 循环遍历map的方法
java HashMap 循环遍历map的方法(转) import java.util.ArrayList; import java.util.HashMap; import java.util.It ...
- js中数组过滤、遍历、迭代every、some、filter、map、forEach、reduce、reduceRight
全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组过滤.遍历.迭代 数组的过滤.遍历.迭代操作中 1.过滤为将满足条件的元素筛选出来,返回数组 2.遍历为分别计算每一个元素值 ...
- java 轻量级map,java Map 遍历速度最优解
java Map 遍历速度最优解 第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (ite ...
- java map统计学生名单_Java含自己的总结:集合,学生,遍历,ArrayList,Set,Map,泛型,班级,发牌—诗书画唱...
声明一个ArrayList,存储一条学生信息,内容为 1 张三 22 男,将信息进行遍历出来 package list; import java.util.ArrayList; im ...
- java获取map遍历,Map获取键值,Map的几种遍历方法总结(推荐)
Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部类,描述Map中的按键/数值对. S ...
- Java Map遍历方式的选择
1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...
最新文章
- TensorFlow基础5-可训练变量和自动求导机制
- open python语言实现 pdf_使用python操作Pdf代码实现
- 业界 | 计算芯片革命来临?英伟达谷歌入局紧逼英特尔
- hadoop 2.7.3 java_java - Hadoop 2.7.3 Java运行时错误 - 找不到core-site.xml - 堆栈内存溢出...
- 10.19 qbxt国庆day3
- 安装asterisk 时遇到的报错情况,及解决办法。
- 织入业务代码-LogAspect
- Lambda表达式使用2
- java中android_在Android中用纯Java代码布局
- 大寨鸿蒙系统的电器,华为传来两个好消息,鸿蒙OS大时代将于6月2日正式开启...
- Linux环境编程导引
- 同一工作组无法访问_工作组、AD、域、DC...
- bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍
- c# winform 设置winform进入窗口后在文本框里的默认焦点
- 1、matplotlib绘制一个简单的图形
- tapestry5 中文文档
- 从运营到高管,这是我总结的运营人能力地图
- 全网最全python教程,从零到精通(学python有它就够必收藏)
- win 7计算机图标变了,win7系统桌面图标变成一样的解决方法
- linux安装程序企鹅,分享|Linux/Unix 桌面趣事:召唤一群企鹅在桌面上行走
热门文章
- 【VisionMaster 行业应用案例】第一讲 光伏丝网印刷应用
- js使用splice删除数组元素
- python string indices must be_Python解析json时提示“string indices must be integers”问题解决方法...
- 用计算机唱一个学猫叫,学猫叫计算机简谱 免费版
- 调焦后焦实现不同距离成像_分不清对焦和焦距?一篇文章让你理清
- Flutter之Decoration(编写圆角竖线)
- 设计模式笔记:命令模式
- 自定义VIEW实现应用内消息提醒上下轮播
- QT之窗口背景颜色和图片设置
- 视频教程-2021软考信息系统项目管理师_项目管理(下) 视频培训教程-软考