您的位置 首页 java

jdk1.8中Map遍历3种方式,100万数据性能测试报告

背景

程序员实战开发中集合用的是非常非常多的,方法入参、数据转换、出参等等.

学习目标

  • 搞清楚Map的迭代器 Iterator 使用
  • 搞清楚Map3种迭代方式的性能

常见技巧

程序员开始学习啦,数据初始化准备

Map跟Set是对兄弟,很多特性都相同,请看下面分析

entrySet迭代方式

这里只举例子下面分析原理,while 或 foreach 只是语法变化了,本质还是通过迭代器

entrySet这名字看上去就是个Set

keySet迭代方式

values方式

—————–源码分析————————

jdk设计者非常的智慧,Map本来是没有iterator方法的,设计者通过一个内部类EntrySet来让Map拥有Set的能力

Map 、Set 都无序的,但Map是装一对数据K,V,然后JDK设计者搞出了下面类型

Set<Map.Entry<K,V>> 包装一下,就可以当Set用了。

通过继承AbstractSet然后就有了set的特性,把key、value封装到一个叫Map.Entry<K,V>类中完美变身,

Entry是个内部对象

keySet思路差不多,请看我截图源码

迭代器方法都差不多,都是通过nextNode()取相应数据,注意接口Iterator< 泛型 类型>

Set其实可以当Map来用,请看源码

他的K就是Set的元素,V是固定的一个值Object

还有很多细节请程序员没自己看JDK,

———–性能测试报告————————

1万数据

10万数据

100万数据

总结

  1. jdk1.8放心的用entrySet吧,性能测试非常完美。
  2. 把Map看成特殊的Set,把Set看成特殊的Map【原因看看源码你就发现了】。

又get到新知识的,请关注啊

程序汪汪持续输入

文章来源:智云一二三科技

文章标题:jdk1.8中Map遍历3种方式,100万数据性能测试报告

文章地址:https://www.zhihuclub.com/196149.shtml

关于作者: 智云科技

热门文章

网站地图