`
robinsoncrusoe
  • 浏览: 736489 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

hashmap

阅读更多
不错 Map没实现Iterator接口 要遍历这样:
下面是我写的测试程序:
public class Test {
    public static void main(String[] args) {

      Map map = new HashMap();
      map.put("k1", "怎样遍历一个hashMap");
      map.put("k2", "这样遍历");
      
      Set entrys = map.entrySet();
      for(Iterator iter= entrys.iterator(); iter.hasNext();){
       Map.Entry entry = (Map.Entry)iter.next();
       //entry.getKey()拿出Map中的值
       System.out.println(entry.getValue());
      }
    }
}



Map虽然实现了Collection接口,但是并不能直接遍历。如果想遍历Map,需要使用entrySet

view plaincopy to clipboardprint?
/** 
*Entry: java.util.Entry 
*hashmap类型为HashMap 
*/ 
for(Iterator iter=hashmap.entrySet().iterator(); iter.hasNext();){  
    Entry entry = (Entry)iter.next();  
    entry.getKey();     //返回与此项对应的键  
    entry.getValue();   //返回与此项对应的值  
} 
/**
*Entry: java.util.Entry
*hashmap类型为HashMap
*/
for(Iterator iter=hashmap.entrySet().iterator(); iter.hasNext();){
 Entry entry = (Entry)iter.next();
 entry.getKey();  //返回与此项对应的键
 entry.getValue(); //返回与此项对应的值
}

另外一种方式是使用keySet进行遍历,看别人的文章和程序运行结果来看,似乎要慢一些。因为对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。

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

首选应该是上面的方法。

view plaincopy to clipboardprint?
import java.util.HashMap;  
import java.util.Iterator;  
import java.util.Calendar;  
 
public class HashMapTest {  
 
public static void main(String[] args) {  
HashMap hashmap = new HashMap();  
for(int i=0;i<1000;i++){  
hashmap.put(""+i,"hello");  
}  
 
long bs = Calendar.getInstance().getTimeInMillis();  
Iterator iterator = hashmap.keySet().iterator();  
//String value = "";  
while(iterator.hasNext()) {  
//value = hashmap.get(iterator.next());  
System.out.println(hashmap.get(iterator.next()));  
}  
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,"hello");  
}  
long bs = Calendar.getInstance().getTimeInMillis();  
//Set set = hashmap.entrySet() ;  
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.println(entry.getValue());  
}  
System.out.println(Calendar.getInstance().getTimeInMillis() - bs);  
}  
 
} 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Calendar;

public class HashMapTest {

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

long bs = Calendar.getInstance().getTimeInMillis();
Iterator iterator = hashmap.keySet().iterator();
//String value = "";
while(iterator.hasNext()) {
//value = hashmap.get(iterator.next());
System.out.println(hashmap.get(iterator.next()));
}
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,"hello");
}
long bs = Calendar.getInstance().getTimeInMillis();
//Set set = hashmap.entrySet() ;
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.println(entry.getValue());
}
System.out.println(Calendar.getInstance().getTimeInMillis() - bs);
}

}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/blackchoc/archive/2009/04/25/4123837.aspx
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics