天天看點

Hashtable:僅有兩列的表

Hashtable集合和ArrayList、Stack和Queue都不一樣,該集合可用看作是一個僅有兩列的表格,第一列是鍵,存放的是唯一不可重複的值。第二列是值,随便放什麼都可以。由于Hashtable這樣的特征,是以這個集合不适合放置順序的值,卻可以放置些能被唯一辨別的值。比如以下代碼說明了這個現象:

System.Collections.Hashtable phoneBook = new System.Collections.Hashtable();

phoneBook.Add("Leo", "139");

phoneBook.Add("Shy", "138");

phoneBook.Add("Hai", "137");

phoneBook.Add("Lii", "188");

怎麼取值呢?令你驚訝的是,Hashtable不直接支援通過下标取值,如果我們要通路元素,必須要知道key的值。

第一種方案直接依賴key值擷取元素的值:

System.Console.WriteLine(phoneBook["Leo"]);

System.Console.WriteLine(phoneBook["Shy"]);

System.Console.WriteLine(phoneBook["Hai"]);

System.Console.WriteLine(phoneBook["Lii"]);

如果你需要周遊Hashtable中的是以元素,你需要采用如下的方案:

foreach (System.Collections.DictionaryEntry entry in phoneBook)

{

System.Console.WriteLine("phoneBook[{0}]:{1}", entry.Key, phoneBook[entry.Key]);

}

得到的結果如圖3.1.29:

<a href="http://blog.51cto.com/attachment/201203/225340705.jpg" target="_blank"></a>

圖3.1.29

通過周遊DictionaryEntry我們可以得到Hashtable的所有鍵,值得注意的是,周遊集合的次序和值進入集合的次序沒有必然的關系。

本文轉自shyleoking 51CTO部落格,原文連結:http://blog.51cto.com/shyleoking/805161

繼續閱讀