文章目录

  • 说明
  • 第一种方式:遍历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的几种方式以及性能小结相关推荐

  1. Java 遍历 Map 的几种方式

      在 Java 中遍历 Map 有多种方法,既然 Java 中的所有 map 都实现了 Map 接口,以下方法适用于任何 map 实现(HashMap,TreeMap,LinkedHashMap,H ...

  2. Java遍历Map的五种方式

    一.遍历Map的五种方式 java中遍历map一般有五种方法,从最早的Iterator,到java5支持的foreach,再到java8的Lambda表达式. 如果只是获取key,或者value,推荐 ...

  3. java map 迭代遍历_java 遍历Map的四种方式

    java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...

  4. java 遍历map key_java 遍历Map的四种方式

    java 遍历Map的四种方式 CreationTime--2018年7月16日16点15分 Author:Marydon 一.迭代key&value 第一种方式:迭代entrySet 1.方 ...

  5. 遍历 ArrayList和遍历 Map的几种方式

    遍历 ArrayList和遍历 Map的几种方式 遍历 ArrayList 遍历 Map ☀️相关笔记章节:

  6. Java遍历Map的4种方式

    public static void main(String[] args) {// 循环遍历Map的4中方法Map<Integer, Integer> map = new HashMap ...

  7. java遍历map前n项_Java遍历Map的几种方式

    日常开发中,遍历Map是很常见的操作,在Java中有几种方式可以实现.在此记录一下. Map map = new HashMap<>(); map.put(1997L, "牛&q ...

  8. java遍历map的几种方式

    想了解更多数据结构以及算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答.也可以扫描下面的二维码关注 在java中常见的map有HashMap和TreeMap,他们 ...

  9. 遍历map的几种方式

    Map<String, Integer> map = new HashMap<>(); for (int i = 0; i < 100000; i++) { map.pu ...

最新文章

  1. 暑期集训2:ACM基础算法 练习题C:CF-1008A
  2. [MOSS 译]如何:在WEB内容查询部件中使用自定义的字段
  3. IPFS Series -- Bitswap Protocol
  4. 带头结点的单链表的逆置
  5. idea getset的快捷键
  6. javascript等待异步线程完成_JavaScript 中的异步原理
  7. 怎么查看电脑多少内核和多少逻辑处理器?
  8. How to enable multiple text type for Product
  9. 谁知道这个代码片段干嘛的
  10. 《笨办法学python》6_笨办法学Python 习题 25: 更多更多的练习
  11. html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航
  12. LeetCode 三数之和 — 优化解法
  13. influxDB框架 数据存储 TSM 数据操作等详解
  14. 计算机基础与c语言程序设计题库,2017年计算机基础考试题库完整版「附答案解析」...
  15. 照相机的成像原理,镜头和单反相机的认识
  16. mt6755完整原理图pdf mt6755lte-a智能手机应用程序处理器技术简介
  17. 外卖 webpp2---hesdar组件
  18. 数字化进阶在即,智慧医院建设迎来黄金期-2020爱分析·中国智慧医院行业趋势报告
  19. 云游戏能成为5G第一个杀手级应用吗?
  20. 教你如何搭建编译服务器安装加密系统

热门文章

  1. SAP以创新提升极限帆船赛
  2. CKMLCP前期未结算_报错
  3. 函数模块:CTVB_COMPARE_TABLES
  4. apt-get install php 指定版本号,如何使用apt-get升级单个软件包?
  5. 大厂python面试题_BAT大厂Python面试题精选,看完后离拿到offer只有一步之遥(含答案)...
  6. linux常用ogg脚本,ogg基本监控脚本
  7. android:process=.server,Android启动(三)----开启SystemServer进程
  8. android 状态机的作用,Android 状态机、状态模式 基础框架实现
  9. 【Python教程】类及对象教程
  10. 4道Python基础字典练习题