簡體   English   中英

Dictionary和Hashtable之間的主要區別是什么

[英]What is the primary difference between Dictionary and Hashtable

Dictionary和Hashtable有什么區別。 我怎樣才能得出哪些結論可以使用?有人可以幫幫我嗎?

Dictionary類與Hashtable類的區別在於多種方式。 除了強類型之外,Dictionary還使用與Hashtable類不同的沖突解決策略,使用稱為鏈接的技術。

你可以閱讀這篇文章: http//msdn.microsoft.com/en-us/library/ms379571(v = vs。80)。aspx #datastructures20_2_topic6

這真的很有用。

Hashtable已經過時了。 始終使用詞典。

我也是哈希表的新手,但......

Dictionary是一個包含兩列(Key和Value,兩者都有某些類型)的基本表,以及稍后添加的大量行。 您將在字典中看到您提供的密鑰和字典為您提供了之前通過完全相同的密鑰添加的值。

哈希表中的東西略有不同。 你有兩個列的表(鍵和值,都是“對象”類型)。 密鑰可能不是唯一的。 現在你真的有兩個表:一個有兩列:Key和Hash,另一個有兩列Hash和Value。 哈希是從Key獲得的一些整數值。 事實證明,雖然Keys可能是唯一的,但Hashes可能不是。 [但我不確定這個...所以我說“虛擬”...]

現在示例:

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可能是這樣的:

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

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

我希望這有用。 任何能夠更好地解釋它的人都會毫不猶豫地這樣做。

謝謝,祝你好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM