2011-03-03 134 views
5

Dictionary和Hashtable有什麼區別?我該如何得出使用哪個結論?任何人都可以幫助我嗎?Dictionary和Hashtable之間的主要區別是什麼

+3

http://stackoverflow.com/questions/301371/why-dictionary-is-preferred-over-hashtable-in-c – Douglas 2011-03-03 09:42:58

+0

查看下面類似的問題:http://stackoverflow.com/questions/1089132/net- hashtable-vs-dictionary-can-the-dictionary-as-as-fast – 2011-03-03 09:43:04

回答

1

散列表已過時。總是使用詞典。

1

我在哈希表新手太多,但...

字典是具有兩列的基本表(Key和Value,既具有某些類型)和大量的行以後添加。你會看到,在字典中你給一個關鍵字和字典給你以前用完全相同的鍵添加的價值。

在散列表中的東西稍有不同。你有兩列的表(鍵和值,都是「對象」類型)。密鑰可能不是唯一的。現在你虛擬有兩個表:一列有兩列:鍵和散列,另一列有兩列哈希和值。哈希是從Key得到的一些整數值。事實證明,儘管Keys可能是唯一的,但Hashes可能不是。 [但我不知道這...所以我說:「virtualy」 ...]

現在,例如:

Hashtable ht = new Hashtable(); 
// Key of type Int32 
ht[16] = "That is Int32"; 
// Key of type String 
ht["Blah"] = 15; 
// Key of type Boolean 
ht[false] = "That is boolean"; 
// Key of type String 
ht["Hohoho"] = false; 

,以後你可以訪問存儲在Hashtable中只使用密鑰的任何值(如果沒有這樣的鍵返回null):

Console.WriteLine("ht[{0}] = {1};", 16, ht[16] ?? "null"); 
Console.WriteLine("ht[{0}] = {1};", "Test", ht["Test"] ?? "null"); // doesnt exist eh... 
Console.WriteLine("ht[{0}] = {1};", false, ht[false] ?? "null"); 
Console.WriteLine("ht[{0}] = {1};", "Hohoho", ht["Hohoho"] ?? "null"); 

要sumarize:

字典是這樣的:

[ Key ][ Value ] 
    A  1.5 
    B  1.6 
    C  -8 
    .... 

和Hashtable probabily是這樣的:

[ Key ][ Hash ] 
    A  1 
    B  2 
    C  -99 
     ... 

[ Hash ][ Value ] 
    -99  -8 
    1  1.6 
    2  1.5 
     .... 

我希望這是任何有幫助的。任何人都可以更好地解釋它,毫不猶豫地這樣做。

謝謝,祝你好運。

相關問題