HashMap遍历

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

/** *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中,所以就快了。

首选应该是上面的方法。

 

 

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); } }

 

你可能感兴趣的:(HashMap遍历)