学习怎样遍历Java hashMap及不同方法的性能。

  1. // hashMap的遍历
  2. public void testHashMap() {
  3. Map<String, String> map = new HashMap<String, String>();
  4. for (int i = 1; i < 100001 ; i++) {
  5. map.put(String.valueOf(i), "value1");
  6. }
  7.  
  8. //第一种:普遍使用,二次取值
  9. System.out.println("通过Map.keySet遍历key和value:");
  10. long t1 = System.currentTimeMillis();
  11. for (String key : map.keySet()) {
  12. System.out.println("key= " + key + " and value= " + map.get(key));
  13. }
  14. long t2 = System.currentTimeMillis();
  15.  
  16. //第二种
  17. System.out.println("通过Map.entrySet使用iterator遍历key和value:");
  18. long t3 = System.currentTimeMillis();
  19. Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
  20. while (it.hasNext()) {
  21. Map.Entry<String, String> entry = it.next();
  22. System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  23. }
  24. long t4 = System.currentTimeMillis();
  25.  
  26. //第三种:推荐,尤其是容量大时
  27. System.out.println("通过Map.entrySet遍历key和value");
  28. long t5 = System.currentTimeMillis();
  29. for (Map.Entry<String, String> entry : map.entrySet()) {
  30. System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
  31. }
  32. long t6 = System.currentTimeMillis();
  33.  
  34. //第四种
  35. System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
  36. long t7 = System.currentTimeMillis();
  37. for (String v : map.values()) {
  38. System.out.println("value= " + v);
  39. }
  40. long t8 = System.currentTimeMillis();
  41. long t12 = t2 - t1;
  42. long t34 = t4 - t3;
  43. long t56 = t6 - t5;
  44. long t78 = t8 - t7;
  45. System.out.println("--------总耗费时间----------");
  46. System.out.println(t12);
  47. System.out.println(t34);
  48. System.out.println(t56);
  49. System.out.println(t78);
  50. }

通过运行发现:

四种方式的的运行时间分别为:

通过第三种和第四种的方式是比较快的。第四种的缺点是不能遍历hashMap的key值。

四种遍历hashMap的方法及比较的更多相关文章

  1. Java中四种遍历List的方法

    package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterator; imp ...

  2. HashMap的四种遍历方法,及效率比较(简单明了)

    https://yq.aliyun.com/ziliao/210955 public static void main(String[] args) { HashMap<Integer, Str ...

  3. HashMap的四种遍历!

    HashMap的四种遍历 import java.util.Collection; import java.util.HashMap; import java.util.Map; import jav ...

  4. Map的四种遍历

    //Map的四种遍历方法 public static void main(String[] args) { Map<String, String> map = new HashMap< ...

  5. [集合]Map的 entrySet() 详解以及用法(四种遍历map的方式)

    Entry 由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系. Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对也 ...

  6. java map的四种遍历

    四种遍历: public static void main(String[] args) { Map<String, String> map = new HashMap<String ...

  7. list的四种遍历方式

    1.手先增强for循环和iterator遍历的效果是一样的,也就说 增强for循环的内部也就是调用iteratoer实现的,但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容.不能获 ...

  8. Map 的四种遍历方式

    Map 的四种遍历方式 import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class ...

  9. java集合四种遍历方式

    package conection; import java.util.Iterator;import java.util.LinkedList;import java.util.List; publ ...

随机推荐

  1. vuejs安装篇

    1.安装nodejs,自带npm环境. 地址:https://nodejs.org/en/download/,Node.js 历史版本下载地址:https://nodejs.org/dist/  可自 ...

  2. python3: 数字日期和时间(1)

    ---恢复内容开始--- 1. 数字的四舍五入 Q: 你想对浮点数执行指定精度的舍入运算 A: 简单的使用内置的round(value, ndigits)函数即可. >>> roun ...

  3. Spring线程池配置模板设计(基于Springboot)

    目录 线程池配置模板 基础的注解解释 常用配置参数 配置类设计 线程池使用 ThreadPoolTaskExecutor源码 线程池配置模板 springboot给我们提供了一个线程池的实现,它的底层 ...

  4. 部署weblogic遇到的问题总结

    myeclipse开发的项目,运行在tomcat7上完全正常.部署到weblogic10上就出现了问题,现把问题记录一下: 1.找不到javax/servlet/jsp/jstl/core/Condi ...

  5. python第四十二课——__str__(self)函数

    4.__str__(self): 作用: 创建完对象,直接打印对象名/引用名我们得到的是对象的内存信息(十六进制的地址信息), 这串数据我们程序员并不关心,我们更希望看到的是属性赋值以后的内容(属性赋 ...

  6. mpvue 应用 Vant Weapp框架开发微信小程序

    今天在使用mpvue开发微信小程序的过程中需要实现一个底部上拉选择列表的功能,因为之前做过H5微信公众号的开发,使用的就是有赞的Vant-ui,所以第一时间就想到了有赞的Vant Weapp UI框架 ...

  7. [Usaco2007 Jan]Balanced Lineup

    嘟嘟嘟 一道RMQ板子题,分别维护最大值和最小值,不解释. #include<cstdio> #include<iostream> #include<algorithm& ...

  8. MacOS 快速搭建Odoo开发环境

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307325.html  一:安装PostgreSQL 下载并安装PostgreSQL数据库:http://do ...

  9. [转]System.DllNotFoundException: 无法加载 DLL“*.dll”: 内存位置访问无效。 (异常来自 HRESULT:0x800703E6)

    我在使用地税发票控件进行开票的测试的时候,在xp上测试时正常的,在别人的win7系统测试也是正常,但我在我本机确不正常.我本机装的是msdn版本win7系统,这个系统比较原装. 错误信息如下: -- ...

  10. WorldWind源码剖析系列:外包围盒类BoundingBox和外包围球类BoundingSphere

    PluginSDK中的外包围盒.外包围球分别用类 BoundingBox和BoundingSphere描述,其类图如下所示. 外包围盒BoundingBox类的corners字段用来存储外包围盒的8个 ...