1. 程式人生 > >Java中如何遍歷Map對象的4種方法

Java中如何遍歷Map對象的4種方法

highlight lai put iter popu out tro blog 二叉

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. }



遍歷方式一 : entrySet() + 增強for循環

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


遍歷方式二: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. }

Java中如何遍歷Map對象的4種方法