Map的Entry方法

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 操做。

相關文章
相關標籤/搜索