1. 程式人生 > >Map.Entry(來自百度知道,下附地址)

Map.Entry(來自百度知道,下附地址)

你是否已經對每次從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()方法,因此,上面的程式碼可以被組織得更符合邏輯。舉例如下:

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

儘管增加了一行程式碼,我們卻省略了許多對Map不必要的“get”呼叫。同時,提供給開發人員一個同時保持了關鍵字和其對應的值的類。Map.Entry同時也提供了一個setValue()方法,程式設計師可以使用它修改map裡面的值。

閱讀全文(427) | 回覆(1) | TrackBack(0) | 編輯 | 精華

回覆:Map.Entry 類使用簡介(轉)
文章收藏, 網上資源

tone發表評論於2007-2-28 15:23:15

Hashtable內部排列的方式是雜湊排布,所以當輸出資訊時會是無序的。為了能保證輸出的資料按照順序排列,不要渴望用java自帶的函式來對Hashtable物件進行調整處理。當我們獲取Hashtable裡的KEY和VALUE時,一般都運行了Map.Entry類來轉換,好,現在就用這個類來作文章,我具體寫了一個方法。

程式碼:

/**
* 方法名稱:getSortedHashtable
* 引數:Hashtable h 引入被處理的散列表
* 描述:將引入的hashtable.entrySet進行排序,並返回
*/
public static Map.Entry[] getSortedHashtable(Hashtable h){

Set set = h.entrySet();

Map.Entry[] entries = (Map.Entry[])set.toArray(new Map.Entry[set.size()]);

Arrays.sort(entries,new Comparator(){

public int compare(Object arg0, Object arg1) {
Object key1 = ((Map.Entry)arg0).getKey();
Object key2 = ((Map.Entry)arg1).getKey();
return ((Comparable)key1).compareTo(key2);
}

});

return entries;
}

呼叫這個方法:

Map.Entry[] set = getSortedHashtable(t);

//perportyTable
for (int i=0;i<set.length;i++){

System.out.println(set[i].getKey().toString());

System.out.println(set[i].getValue().toString());

}