• 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. }  
  • 相关阅读:
    周强 201771010141 《面向对象程序设计(Java)》第十一周学习总结
    周强 201771010141《面对对象程序设计(java)》第十周学习总结
    周强 201771010141 《面向对象程序设计(java)》第九周实验总结
    周强201771010141《面向对象程序设计(java)》第六周学习总结
    周强201771010141《面向对象程序设计Java》第八周学习总结
    周强 201771010141 《面向对象程序设计(java)》第七周学习总结
    周强 201771010141《面向对象程序设计(java)》第四周学习总结
    «面向对象程序设计(java)»第三周学习总结 周强 201771010141
    周强 201771010141 《面向对象程序设计(java)》 第二周学习总结
    201771010109 焦旭超《面向对象程序设计(java)》第十二周学习总结
  • 原文地址:https://www.cnblogs.com/z-bear/p/8638646.html
Copyright © 2020-2023  润新知