Java中如何遍历Map对象的4种方法

https://blog.csdn.net/tjcyjd/article/details/11111401

Java 中Map 根据底层数据结构的不同,存在多种不同的实现,常见如散列 HashMap  ,链表linkedMap   ,散列链表linkedHashMap ,树形表(二叉树) TreeMap 等。

本文讨论的是我们编程中最为常用的HashMap  散列表的 几种不同的遍历方式,及各方式间在写法和效率上的比较。

首先准备一个Map 散列表,存储十万条记录。 

key 是从key0 开始一直到 key99999

value 从hello0 开始一直到 hello99999

[java] view plain copy
 
  1. public static void main(String[] args) {  
  2.     Map<String,Object> map=new HashMap<String,Object>();  
  3.         for(int i=0;i<100000;i++){  
  4.             map.put("key"+i, "hello"+i);  
  5.         }  
  6.       
  7. }  



遍历方式一 : entrySet()  +  增强for循环

[java] view plain copy
 
  1. // Map 遍历方式一   //2425.7  
  2.    static void iterator_type1(Map<String,Object> map){  
  3.       
  4.       Set<Map.Entry<String, Object>> set= map.entrySet();  
  5.       long start=new Date().getTime();  
  6.       for(Map.Entry<String, Object> item :set){  
  7.               String key=item.getKey();  
  8.               Object value=item.getValue();  
  9.             System.out.println("key:"+key+"  "+"value:"+value);  
  10.       }  
  11.       long end=new Date().getTime();  
  12.      System.out.println("遍历耗时为:"+(end-start)+" 毫秒");  
  13.         
  14.   }  


遍历方式二:entrySet() +iterator迭代

[java] view plain copy
 
  1. //Map  遍历方式二  2408.9  
  2.      static void iterator_type2(Map<String,Object> map){  
  3.       Set<Map.Entry<String, Object>> set= map.entrySet();  
  4.       Iterator<Map.Entry<String, Object>>  it=  set.iterator();  
  5.       long start=new Date().getTime();  
  6.         while(it.hasNext()){  
  7.             Map.Entry<String, Object> item=   it.next();  
  8.             String key=item.getKey();  
  9.             Object value=item.getValue();  
  10.             System.out.println("key:"+key+"  "+"value:"+value);  
  11.         }  
  12.       long end=new Date().getTime();  
  13.          System.out.println("遍历耗时为:"+(end-start)+" 毫秒");  
  14.      }  


遍历方式三:keySet() + iterator迭代

[java] view plain copy
 
  1. //Map  遍历方式三  2441.0  
  2.      static void iterator_type3(Map<String,Object> map){  
  3.       Set<String> keys=   map.keySet();  
  4.       Iterator<String> it=    keys.iterator();  
  5.       long start=new Date().getTime();  
  6.          while(it.hasNext()){  
  7.                String key=it.next();  
  8.              Object value=map.get(key);  
  9.                System.out.println("key:"+key+"  "+"value:"+value);  
  10.          }  
  11.       long end=new Date().getTime();  
  12.       System.out.println("遍历耗时为:"+(end-start)+" 毫秒");  
  13.      }  


遍历方式四:keySet() + 增强for循环

[java] view plain copy
 
  1. //Map  遍历方式四   2445.5  
  2. static void iterator_type4(Map<String,Object> map){  
  3.  Set<String> keys=   map.keySet();  
  4.  long start=new Date().getTime();  
  5.  for(String key :keys){  
  6.   Object value=map.get(key);  
  7.          System.out.println("key:"+key+"  "+"value:"+value);  
  8.         }  
  9.  long end=new Date().getTime();  
  10.  System.out.println("遍历耗时为:"+(end-start)+" 毫秒");  
  11. }  
原文地址:https://www.cnblogs.com/z-bear/p/8638646.html