zoukankan      html  css  js  c++  java
  • 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. }  
  • 相关阅读:
    PAT1037:Magic Coupon
    PAT1081:Rational Sum
    PAT1039: Course List for Student
    PAT1069:The Black Hole of Numbers
    VC++中字符串编码处理的一些相关问题
    PAT1110:Complete Binary Tree
    Java编译器003---javac -d/-sourcepath/-classpath选项
    Java编译器002---javac -source/-target选项
    Java编译器001---javac -g选项
    力扣练习010---把字符串转换成整数
  • 原文地址:https://www.cnblogs.com/z-bear/p/8638646.html
Copyright © 2011-2022 走看看