Dictionary和Hashtable之间的主要区别是什么

时间:2011-03-03 09:40:55

标签: c# .net collections

Dictionary和Hashtable有什么区别。我怎样才能得出结论:谁能帮帮我?

3 个答案:

答案 0 :(得分:6)

  

Dictionary类不同于   Hashtable类的方式多于一个。   除了强类型,   字典也采用了   不同的碰撞分辨率   策略比Hashtable类,   使用一种被称为的技术   链接。

您可以阅读这篇文章:http://msdn.microsoft.com/en-us/library/ms379571(v=vs.80).aspx#datastructures20_2_topic6

这非常有用。

答案 1 :(得分:1)

Hashtable已经过时了。始终使用词典。

答案 2 :(得分:1)

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

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
      ....

我希望这有用。任何能够更好地解释它的人都会毫不犹豫地这样做。

谢谢,祝你好运。