专业的JAVA编程教程与资源

网站首页 > java教程 正文

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

temp10 2024-09-22 09:57:58 java教程 8 ℃ 0 评论

背景

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

学习目标

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

常见技巧

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

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

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到新知识的,请关注啊

程序汪汪持续输入

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表