今天看Think in java 的GUI这一章的时候,里面的TextArea这个例子在遍历Map时用到了Map.Entry 和 Map.entrySet() ,记得只见过Map.KeySet()和values()这两个方法,因而到API中一看,Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是一个接口,他的用途是表示一个映射项(里面有Key和Value),而Set<Map.Entry<K,V>>表示一个映射项的Set。java
Map.Entry里有相应的getKey和getValue方法,让咱们可以从一个项中取出Key和Value。这样就能理解了例子中的写法了。app
for(Map.Entry me : m.entrySet()) {spa
t.append(me.getKey() + ": " + me.getValue() + "/n");orm
}接口
这里的t是一个TextArea,m是一个HashMap。get
这种遍历Map的方法可让咱们在从Map中取得关键字以后,咱们不用每次重复返回到Map中取得相对的值。it
以下面是之前的写法:每次都要再从m中读出s所对应的值。io
Set keys = m.keySet( );
if(keys != null)
for(String s : keys)
t.append(s + ": " + m.get(s) + "/n");class
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;import
public class TestEntrySet { public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); map.put("1", "张三"); map.put("2", "李四"); map.put("3", "王五"); System.out.println("方法一:"); Iterator iterator=map.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<String, String> entry= (Entry<String, String>) iterator.next(); System.out.println("key:"+entry.getKey()+" value"+entry.getValue()); } System.out.println("方法二:"); for (Map.Entry<String, String> m : map.entrySet()) { System.out.println("key:"+m.getKey()+" value"+m.getValue()); } }}