1.Map.Entry說明html
Map是java中的接口,Map.Entry是Map的一個內部接口。java
Map提供了一些經常使用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一個Set集合,此集合的類型爲Map.Entry。程序員
Map.Entry是Map聲明的一個內部接口,此接口爲泛型,定義爲Entry<K,V>。它表示Map中的一個實體(一個key-value對)。接口中有getKey(),getValue方法。code
2.Map.Entry使用htm
你是否已經對每次從Map中取得關鍵字而後再取得相應的值感受厭倦?使用Map.Entry類,你能夠獲得在同一時間獲得全部的信息。標準的Map訪問方法以下:對象
Set keys = map.keySet( );
if(keys != null) {
Iterator iterator = keys.iterator( );
while(iterator.hasNext( )) {
Object key = iterator.next( );
Object value = map.get(key);
;....
;}
} 接口
而後,這個方法有一個問題。從Map中取得關鍵字以後,咱們必須每次重複返回到Map中取得相對的值,這是很繁瑣和費時的。開發
幸運的是,這裏有一個更加簡單的途徑。Map類提供了一個稱爲entrySet()的方法,這個方法返回一個Map.Entry實例化後的對象集。 接着,Map.Entry類提供了一個getKey()方法和一個getValue()方法,所以,上面的代碼能夠被組織得更符合邏輯。舉例以下:rem
Set entries = map.entrySet( );
if(entries != null) {
Iterator iterator = entries.iterator( );
while(iterator.hasNext( )) {
Map.Entry entry =iterator.next( );
Object key = entry.getKey( );
Object value = entry.getValue();
;....
}
}get
儘管增長了一行代碼,咱們卻省略了許多對Map沒必要要的「get」調用。同時,提供給開發人員一個同時保持了關鍵字和其對應的值的類。Map.Entry同時也提供了一個setValue()方法,程序員可使用它修改map裏面的值。
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; 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()); } } }
方法一: key:3 value王五 key:2 value李四 key:1 value張三 方法二: key:3 value王五 key:2 value李四 key:1 value張三
在API中解釋:
返回此映射中包含的映射關係的 Set
視圖。該 set 受映射支持,因此對映射的更改可在此 set 中反映出來,反之亦然。若是對該 set 進行迭代的同時修改了映射(經過迭代器本身的 remove 操做,或者經過對迭代器返回的映射項執行 setValue 操做除外),則迭代結果是不肯定的。set 支持元素移除,經過 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操做可從映射中移除相應的映射關係。它不支持 add 或 addAll 操做。