入职新公司,查看代码规范的时候,看到一条:

“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 函数遍历相关推荐

  1. java map foreach_java foreach遍历map集合的方法案例

    java foreach遍历map集合的方法是java jdk1.8时出现的新方法,使用了Interface BiConsumer接口来实现,T代表map集合key的类型,U代表map集合Value的 ...

  2. Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin

    1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...

  3. Java 8 Stream Api 中的 peek、map、foreach区别

    #1. 前言 我在Java8 Stream中讲述了 Java 8 Stream API 的一些内容.今天再看一下peek.map.foreach区别. 2. peek peek 操作接收的是一个 Co ...

  4. hashmap java 便利_java HashMap 循环遍历map的方法

    java HashMap 循环遍历map的方法(转) import java.util.ArrayList; import java.util.HashMap; import java.util.It ...

  5. js中数组过滤、遍历、迭代every、some、filter、map、forEach、reduce、reduceRight

    全栈工程师开发手册 (作者:栾鹏) js系列教程1-数组操作全解 js中数组过滤.遍历.迭代 数组的过滤.遍历.迭代操作中 1.过滤为将满足条件的元素筛选出来,返回数组 2.遍历为分别计算每一个元素值 ...

  6. java 轻量级map,java Map 遍历速度最优解

    java Map 遍历速度最优解 第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (ite ...

  7. java map统计学生名单_Java含自己的总结:集合,学生,遍历,ArrayList,Set,Map,泛型,班级,发牌—诗书画唱...

    声明一个ArrayList,存储一条学生信息,内容为  1    张三   22    男,将信息进行遍历出来 package list; import java.util.ArrayList; im ...

  8. java获取map遍历,Map获取键值,Map的几种遍历方法总结(推荐)

    Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部类,描述Map中的按键/数值对. S ...

  9. Java Map遍历方式的选择

    1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...

最新文章

  1. TensorFlow基础5-可训练变量和自动求导机制
  2. open python语言实现 pdf_使用python操作Pdf代码实现
  3. 业界 | 计算芯片革命来临?英伟达谷歌入局紧逼英特尔
  4. hadoop 2.7.3 java_java - Hadoop 2.7.3 Java运行时错误 - 找不到core-site.xml - 堆栈内存溢出...
  5. 10.19 qbxt国庆day3
  6. 安装asterisk 时遇到的报错情况,及解决办法。
  7. 织入业务代码-LogAspect
  8. Lambda表达式使用2
  9. java中android_在Android中用纯Java代码布局
  10. 大寨鸿蒙系统的电器,华为传来两个好消息,鸿蒙OS大时代将于6月2日正式开启...
  11. Linux环境编程导引
  12. 同一工作组无法访问_工作组、AD、域、DC...
  13. bzoj 1696: [Usaco2007 Feb]Building A New Barn新牛舍
  14. c# winform 设置winform进入窗口后在文本框里的默认焦点
  15. 1、matplotlib绘制一个简单的图形
  16. tapestry5 中文文档
  17. 从运营到高管,这是我总结的运营人能力地图
  18. 全网最全python教程,从零到精通(学python有它就够必收藏)
  19. win 7计算机图标变了,win7系统桌面图标变成一样的解决方法
  20. linux安装程序企鹅,分享|Linux/Unix 桌面趣事:召唤一群企鹅在桌面上行走

热门文章

  1. 【VisionMaster 行业应用案例】第一讲 光伏丝网印刷应用
  2. js使用splice删除数组元素
  3. python string indices must be_Python解析json时提示“string indices must be integers”问题解决方法...
  4. 用计算机唱一个学猫叫,学猫叫计算机简谱 免费版
  5. 调焦后焦实现不同距离成像_分不清对焦和焦距?一篇文章让你理清
  6. Flutter之Decoration(编写圆角竖线)
  7. 设计模式笔记:命令模式
  8. 自定义VIEW实现应用内消息提醒上下轮播
  9. QT之窗口背景颜色和图片设置
  10. 视频教程-2021软考信息系统项目管理师_项目管理(下) 视频培训教程-软考