遍历Map的几种方式以及性能小结
文章目录
- 说明
- 第一种方式:遍历Map的entry的方式
- 第二种方式:使用迭代器遍历Map的entry的方式
- 第三种方式:遍历Map的key值的方式
- 第四种方式:使用迭代器的遍历key方式
- 测试代码
- 性能测试以及结果
说明
平时都会用到Map的遍历,索性一次总结一下,省的以后再查来查去了。
第一种方式:遍历Map的entry的方式
/*** 第一种方式:遍历Map的entry的方式** @param inputMap*/public static void fun1(Map<String, Object> inputMap) {System.out.println(DateTest.getTimeNow() + "-----------fun1---开始------");if (inputMap == null || inputMap.isEmpty()) {return;}for (Map.Entry<String, Object> entry : inputMap.entrySet()) {String key = entry.getKey();Object value = entry.getValue();System.out.println(DateTest.getTimeNow() + "[" + key + "]=" + (value == null ? null : value.toString()));}}
第二种方式:使用迭代器遍历Map的entry的方式
/*** 第二种方式:使用迭代器遍历Map的entry的方式** @param inputMap*/public static void fun2(Map<String, Object> inputMap) {System.out.println(DateTest.getTimeNow() + "-----------fun2---开始------");if (inputMap == null || inputMap.isEmpty()) {return;}Iterator entrys = (Iterator) inputMap.entrySet().iterator();while (entrys.hasNext()) {Map.Entry<String, Object> entry = (Map.Entry) entrys.next();String key = entry.getKey();Object value = entry.getValue();System.out.println(DateTest.getTimeNow() + "[" + key + "]=" + (value == null ? null : value.toString()));}}
第三种方式:遍历Map的key值的方式
/*** 第三种方式:遍历Map的key值的方式** @param inputMap*/public static void fun3(Map<String, Object> inputMap) {System.out.println(DateTest.getTimeNow() + "-----------fun3---开始------");if (inputMap == null || inputMap.isEmpty()) {return;}Set<String> keys = inputMap.keySet();for (String key : keys) {Object value = inputMap.get(key);System.out.println(DateTest.getTimeNow() + "[" + key + "]=" + (value == null ? null : value.toString()));}}
第四种方式:使用迭代器的遍历key方式
/*** 第四种方式:使用迭代器的遍历key方式** @param inputMap*/public static void fun4(Map<String, Object> inputMap) {System.out.println(DateTest.getTimeNow() + "-----------fun4---开始------");if (inputMap == null || inputMap.isEmpty()) {return;}Iterator<String> keys = inputMap.keySet().iterator();while (keys.hasNext()) {String key = keys.next();Object value = inputMap.get(key);System.out.println(DateTest.getTimeNow() + "[" + key + "]=" + (inputMap.get(key) == null ? null : inputMap.get(key).toString()));}}
测试代码
测试代码:
public static void main(String[] args) {Map<String, Object> inputMap = new HashMap<>();inputMap.put("name", "张三");inputMap.put("age", "28");inputMap.put("gender", "男");inputMap.put("hobby", "beautiful girl");fun1(inputMap);fun2(inputMap);fun3(inputMap);fun4(inputMap);}
日志:
[2020-03-02 23:32:26.392] -----------fun1---开始------
[2020-03-02 23:32:26.394] [gender]=男
[2020-03-02 23:32:26.394] [name]=张三
[2020-03-02 23:32:26.395] [age]=28
[2020-03-02 23:32:26.396] [hobby]=beautiful girl
[2020-03-02 23:32:26.396] -----------fun2---开始------
[2020-03-02 23:32:26.396] [gender]=男
[2020-03-02 23:32:26.397] [name]=张三
[2020-03-02 23:32:26.397] [age]=28
[2020-03-02 23:32:26.397] [hobby]=beautiful girl
[2020-03-02 23:32:26.403] -----------fun3---开始------
[2020-03-02 23:32:26.404] [gender]=男
[2020-03-02 23:32:26.404] [name]=张三
[2020-03-02 23:32:26.406] [age]=28
[2020-03-02 23:32:26.407] [hobby]=beautiful girl
[2020-03-02 23:32:26.407] -----------fun4---开始------
[2020-03-02 23:32:26.409] [gender]=男
[2020-03-02 23:32:26.409] [name]=张三
[2020-03-02 23:32:26.410] [age]=28
[2020-03-02 23:32:26.410] [hobby]=beautiful girl
性能测试以及结果
以上几种方式都可以实现Map的遍历,但是哪一种的效率高呢?简单测试一下,以事实说话。
测试代码如下:
public static void main(String[] args) {Map<String, Object> inputMap = new HashMap<>();inputMap.put("name", "张三");inputMap.put("age", "28");inputMap.put("gender", "男");inputMap.put("hobby", "beautiful girl");
// fun1(inputMap);
// fun2(inputMap);
// fun3(inputMap);
// fun4(inputMap);int loopTimes = 1000000;long start1 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {fun1(inputMap);}System.out.println(DateTest.getTimeNow() + "fun1耗时:" + (System.currentTimeMillis()-start1) + "ms");long start2 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {fun2(inputMap);}System.out.println(DateTest.getTimeNow() + "fun2耗时:" + (System.currentTimeMillis()-start2) + "ms");long start3 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {fun3(inputMap);}System.out.println(DateTest.getTimeNow() + "fun3耗时:" + (System.currentTimeMillis()-start3) + "ms");long start4 = System.currentTimeMillis();for (int i = 0; i < loopTimes; i++) {fun4(inputMap);}System.out.println(DateTest.getTimeNow() + "fun4耗时:" + (System.currentTimeMillis()-start4) + "ms");}
}
测试结果:
[2020-03-03 00:06:48.909] fun1耗时:208ms
[2020-03-03 00:06:48.997] fun2耗时:86ms
[2020-03-03 00:06:49.263] fun3耗时:266ms
[2020-03-03 00:06:49.446] fun4耗时:183ms
遍历Map的几种方式以及性能小结相关推荐
- Java 遍历 Map 的几种方式
在 Java 中遍历 Map 有多种方法,既然 Java 中的所有 map 都实现了 Map 接口,以下方法适用于任何 map 实现(HashMap,TreeMap,LinkedHashMap,H ...
- Java遍历Map的五种方式
一.遍历Map的五种方式 java中遍历map一般有五种方法,从最早的Iterator,到java5支持的foreach,再到java8的Lambda表达式. 如果只是获取key,或者value,推荐 ...
- java map 迭代遍历_java 遍历Map的四种方式
java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...
- java 遍历map key_java 遍历Map的四种方式
java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...
- 遍历 ArrayList和遍历 Map的几种方式
遍历 ArrayList和遍历 Map的几种方式 遍历 ArrayList 遍历 Map ☀️相关笔记章节:
- Java遍历Map的4种方式
public static void main(String[] args) {// 循环遍历Map的4中方法Map<Integer, Integer> map = new HashMap ...
- java遍历map前n项_Java遍历Map的几种方式
日常开发中,遍历Map是很常见的操作,在Java中有几种方式可以实现.在此记录一下. Map map = new HashMap<>(); map.put(1997L, "牛&q ...
- java遍历map的几种方式
想了解更多数据结构以及算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答.也可以扫描下面的二维码关注 在java中常见的map有HashMap和TreeMap,他们 ...
- 遍历map的几种方式
Map<String, Integer> map = new HashMap<>(); for (int i = 0; i < 100000; i++) { map.pu ...
最新文章
- 暑期集训2:ACM基础算法 练习题C:CF-1008A
- [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段
- IPFS Series -- Bitswap Protocol
- 带头结点的单链表的逆置
- idea getset的快捷键
- javascript等待异步线程完成_JavaScript 中的异步原理
- 怎么查看电脑多少内核和多少逻辑处理器?
- How to enable multiple text type for Product
- 谁知道这个代码片段干嘛的
- 《笨办法学python》6_笨办法学Python 习题 25: 更多更多的练习
- html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航
- LeetCode 三数之和 — 优化解法
- influxDB框架 数据存储 TSM 数据操作等详解
- 计算机基础与c语言程序设计题库,2017年计算机基础考试题库完整版「附答案解析」...
- 照相机的成像原理,镜头和单反相机的认识
- mt6755完整原理图pdf mt6755lte-a智能手机应用程序处理器技术简介
- 外卖 webpp2---hesdar组件
- 数字化进阶在即,智慧医院建设迎来黄金期-2020爱分析·中国智慧医院行业趋势报告
- 云游戏能成为5G第一个杀手级应用吗?
- 教你如何搭建编译服务器安装加密系统
热门文章
- SAP以创新提升极限帆船赛
- CKMLCP前期未结算_报错
- 函数模块:CTVB_COMPARE_TABLES
- apt-get install php 指定版本号,如何使用apt-get升级单个软件包?
- 大厂python面试题_BAT大厂Python面试题精选,看完后离拿到offer只有一步之遥(含答案)...
- linux常用ogg脚本,ogg基本监控脚本
- android:process=.server,Android启动(三)----开启SystemServer进程
- android 状态机的作用,Android 状态机、状态模式 基础框架实现
- 【Python教程】类及对象教程
- 4道Python基础字典练习题