Java中如何遍歷Map對象的4種方法
阿新 • • 發佈:2018-03-24
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
- public static void main(String[] args) {
- Map<String,Object> map=new HashMap<String,Object>();
- for(int i=0;i<100000;i++){
- map.put("key"+i, "hello"+i);
- }
- }
遍歷方式一 : entrySet() + 增強for循環
[java] view plain copy
- // Map 遍歷方式一 //2425.7
- static void iterator_type1(Map<String,Object> map){
- Set<Map.Entry<String, Object>> set= map.entrySet();
- long start=new Date().getTime();
- for(Map.Entry<String, Object> item :set){
- String key=item.getKey();
- Object value=item.getValue();
- System.out.println("key:"+key+" "+"value:"+value);
- }
- long end=new Date().getTime();
- System.out.println("遍歷耗時為:"+(end-start)+" 毫秒");
- }
遍歷方式二:entrySet() +iterator叠代
[java] view plain copy
- //Map 遍歷方式二 2408.9
- static void iterator_type2(Map<String,Object> map){
- Set<Map.Entry<String, Object>> set= map.entrySet();
- Iterator<Map.Entry<String, Object>> it= set.iterator();
- long start=new Date().getTime();
- while(it.hasNext()){
- Map.Entry<String, Object> item= it.next();
- String key=item.getKey();
- Object value=item.getValue();
- System.out.println("key:"+key+" "+"value:"+value);
- }
- long end=new Date().getTime();
- System.out.println("遍歷耗時為:"+(end-start)+" 毫秒");
- }
遍歷方式三:keySet() + iterator叠代
[java] view plain copy
- //Map 遍歷方式三 2441.0
- static void iterator_type3(Map<String,Object> map){
- Set<String> keys= map.keySet();
- Iterator<String> it= keys.iterator();
- long start=new Date().getTime();
- while(it.hasNext()){
- String key=it.next();
- Object value=map.get(key);
- System.out.println("key:"+key+" "+"value:"+value);
- }
- long end=new Date().getTime();
- System.out.println("遍歷耗時為:"+(end-start)+" 毫秒");
- }
遍歷方式四:keySet() + 增強for循環
[java] view plain copy
- //Map 遍歷方式四 2445.5
- static void iterator_type4(Map<String,Object> map){
- Set<String> keys= map.keySet();
- long start=new Date().getTime();
- for(String key :keys){
- Object value=map.get(key);
- System.out.println("key:"+key+" "+"value:"+value);
- }
- long end=new Date().getTime();
- System.out.println("遍歷耗時為:"+(end-start)+" 毫秒");
- }
Java中如何遍歷Map對象的4種方法