HashMap遍历

From:http://blog.csdn.net/blackchoc/archive/2009/04/25/4123837.aspx

 

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

你可能感兴趣的:(String,HashMap,iterator,Class,import)