遍历map的四种方法及性能比较

您所在的位置:网站首页 map遍历key 遍历map的四种方法及性能比较

遍历map的四种方法及性能比较

2024-07-15 14:48:46| 来源: 网络整理| 查看: 265

“写代码时,每次都要告诉自己:最后负责维护代码的,会是一个知道你住在哪的变态暴力狂。"——约翰·伍德(John Woods)

传送门 · 遍历map的四种方式方式一:通过遍历map的keyset方式二:使用map的entrySet方式三:使用迭代器iterator方式四:使用map的values方法 · 耗时比较· 总结· 小彩蛋

昨天在公司用FindBugs插件扫了下组里的代码,发现很多map遍历的性能问题,在这里做个总结和分享,大家有什么不同意见可以随时提。(以下基于HashMap测试,文末还有彩蛋)

· 遍历map的四种方式 方式一:通过遍历map的keyset // 方法一:遍历keySet clock.start("遍历keySet"); Set keySet = map.keySet(); for (String key : keySet) { String value = map.get(key); } clock.stop(); 方式二:使用map的entrySet // 方法二:使用entrySet clock.start("使用entrySet"); Set entries = map.entrySet(); for (Map.Entry entry : entries) { String value = entry.getValue(); } clock.stop(); 方式三:使用迭代器iterator // 方式三:使用iterator clock.start("使用iterator"); Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry next = iterator.next(); String value = next.getValue(); } clock.stop(); 方式四:使用map的values方法 // 方式四:使用values clock.start("使用values"); for (String v : map.values()) { String value = v; } clock.stop(); · 耗时比较 Map map = new HashMap(); for (int i = 0; i < 1000000; i ++) { map.put(String.valueOf(i), "value:" + i); }

构造了一个简单的HashMap,使用四种方法循环跑了5次,结果如下: 第一次:

ms%name00087036%遍历keySet00060025%使用entrySet00048020%使用iterator00045019%使用values

第二次:

ms%name00170043%遍历keySet00085022%使用entrySet00071018%使用iterator00067017%使用values

第三次:

ms%name00098037%遍历keySet00062023%使用entrySet00052019%使用iterator00056021%使用values

第四次:

ms%name00089034%遍历keySet00065025%使用entrySet00046018%使用iterator00060023%使用values

第五次:

ms%name00098036%遍历keySet00065024%使用entrySet00054020%使用iterator00056021%使用values · 总结

1、总的来开,使用iterator迭代器的效率通常是最好的;使用map的keySet遍历value性能最差。 2、结合具体情况:如果只需要遍历出map的所有key,那么keySet无疑是最合适的,因为没有取出value,节省了不必要的空间浪费。

· 小彩蛋

我们都知道,Java标准类库包含了多种Map的基本实现,包括:HashMap、TreeMap、LinkedHashMap、WeakHashMap、ConcurrentHashMap、IdentityHashMap。

由于他们的数据结构不同,行为特征也各不相同,具体表现在效率、键值对保存、呈现次序等多个方面。

就本文的主题来说,TreeMap的结论会更加突出,而WeakHashMap、IdentityHashMap的结论则会有很大不同,感兴趣的话大家可以自己去试试,顺便看一下各种map的实现及源码,会让你对本文结论有更深入的理解。😐



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭