【问题标题】:What is the primary difference between Dictionary and Hashtable字典和哈希表之间的主要区别是什么
【发布时间】:2011-07-07 22:17:12
【问题描述】:

字典和哈希表有什么区别。我如何才能得出使用哪个结论?谁能帮帮我?

【问题讨论】:

标签: c# .net collections


【解决方案1】:

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

字典是一个基本的表,有两列(键和值,都有特定的类型)和很多你以后添加的行。您会看到在字典中您提供了一个键,而字典为您提供了您之前通过完全相同的键添加的值。

在哈希表中,情况略有不同。您再次拥有包含两列的表(键和值,均为“对象”类型)。键可能不是唯一的。现在您实际上有两张表:一张有两列: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");

总结一下:

字典是这样的:

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

我希望这对您有所帮助。任何可以更好地解释它的人,不要犹豫。

谢谢你,祝你好运。

【讨论】:

    【解决方案2】:

    Dictionary 类不同于 Hashtable 类的方式不止一种。 除了是强类型之外, 词典还采用了 不同的碰撞分辨率 策略比 Hashtable 类, 使用一种称为 链接。

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

    真的很有用。

    【讨论】:

      【解决方案3】:

      哈希表已过时。始终使用字典。

      【讨论】:

        猜你喜欢
        • 2011-01-04
        • 2012-04-03
        • 2010-10-26
        • 1970-01-01
        • 2020-08-17
        • 2013-08-31
        • 2011-05-24
        • 2015-08-22
        • 2015-08-06
        相关资源
        最近更新 更多