Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1222319
  • 博文数量: 233
  • 博客积分: 6270
  • 博客等级: 准将
  • 技术积分: 1798
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-26 08:32
文章分类

全部博文(233)

文章存档

2011年(31)

2010年(202)

我的朋友

分类: Java

2010-11-24 11:39:31

第一种:

Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
    Map.Entry entry = (Map.Entry) iter.next();
    Object key = entry.getKey();
    Object val = entry.getValue();
}


效率高,以后一定要使用此种方式!


第二种:

Map map = new HashMap();
Iterator iter = map.keySet().iterator();
while (iter.hasNext()) {
    Object key = iter.next();
    Object val = map.get(key);
}

效率低,以后尽量少使用!


HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:

public class HashMapTest {
    public static void main(String[] args){
        HashMap hashmap = new HashMap();
        for (int i = 0; i < 1000; i++ ) {
            hashmap.put(""+ i, "thanks");
        }

        long bs = Calendar.getInstance().getTimeInMillis();
        Iterator iterator = hashmap.keySet().iterator();
        while (iterator.hasNext()){
            System.out.print(hashmap.get(iterator.next()));
        }
    
        System.out.println();
        System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
        listHashMap();
    }

    public static void listHashMap(){
     java.util.HashMap hashmap = new java.util.HashMap();
     for (int i = 0; i < 1000; i ) ...{
         hashmap.put(""+i, "thanks");
     }
    
     long bs = Calendar.getInstance().getTimeInMillis();
     java.util.Iterator it = hashmap.entrySet().iterator();
     while (it.hasNext()){
         java.util.Map.Entry entry = (java.util.Map.Entry) it.next();
    
// entry.getKey() 返回与此项对应的键

    
// entry.getValue() 返回与此项对应的值

         System.out.print(entry.getValue());
     }
    
     System.out.println();
     System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
    }
}

对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。

而entryset只是遍历了第一次,他把key和value都放到了entry中,所以就快了。




阅读(829) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~