Map<String,String> map = new HashMap<String,String>(){}; map.put("a", "A"); map.put("b", "B"); map.put("c", "C"); //第一種 Set set = map.keySet(); Iterator it = set.iterator(); while(it.hasNext()){ String str = it.next().toString(); } //第二種 Set<Entry<String,String>> entryset = map.entrySet(); Iterator iter = entryset.iterator(); while(iter.hasNext()){ Entry<String,String> entry = (Entry<String,String>)iter.next(); } //第三種 for(Entry<String,String> entry : map.entrySet()){ String strkey = entry.getKey(); String strval = entry.getValue(); } 首先,使用entryset比使用keyset的效率要高。所以建議用后2種方法。 第二和第三種的區別其實就是使用迭代器iteratior和使用一般的for語句的區別,和map本身倒沒什么關系。最簡單的判斷方法,就是對要迭代的內容(本例是個map,如果是一個list同理),在循環過程中,你需要進行add或者remove操作不。for語句的循環是不能做這樣的操作的,只能使用迭代器。 不過,個人認為,for語句雖然看上去代碼少一點,但敲起來沒iterator有感覺