C# 字典和哈希表的主要区别是什么

C# 字典和哈希表的主要区别是什么,c#,.net,collections,C#,.net,Collections,字典和哈希表的区别是什么。我怎样才能得出使用哪一个的结论?有人能帮我吗?哈希表已经过时了。经常使用字典 Dictionary类不同于 Hashtable类有多种方式。 除了强类型之外, 该词典还采用了 不同的碰撞分辨率 策略,而不是哈希表类, 使用一种称为 锁链 您可以阅读本文: 它真的很有用。我也是哈希表的新手,但是 Dictionary是一个基本表,有两列(键和值,都有特定的类型)和许多以后添加的行。您将看到,在dictionary中,您提供了一个键,dictionary为您提供了以前使用完

字典和哈希表的区别是什么。我怎样才能得出使用哪一个的结论?有人能帮我吗?

哈希表已经过时了。经常使用字典

Dictionary类不同于 Hashtable类有多种方式。 除了强类型之外, 该词典还采用了 不同的碰撞分辨率 策略,而不是哈希表类, 使用一种称为 锁链

您可以阅读本文:


它真的很有用。

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

Dictionary是一个基本表,有两列(键和值,都有特定的类型)和许多以后添加的行。您将看到,在dictionary中,您提供了一个键,dictionary为您提供了以前使用完全相同的键添加的值

在哈希表中,情况略有不同。表中又有两列(键和值,都是“对象”类型)。这些键可能不是唯一的。现在您实际上有两个表:一个有两列:Key和Hash,另一个有两列Hash和Value。哈希是从密钥中获取的某个整数值。结果表明,虽然键可能是唯一的,但哈希可能不是唯一的。 [但我对此不确定…所以我说“虚拟”…]

现在举个例子:

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;
稍后,您可以仅使用键访问哈希表中存储的任何值(如果没有这样的键,则返回null):

概括地说:

字典是这样的:

[ Key ][ Value ]
   A      1.5
   B      1.6
   C      -8
     ....
[ Key ][ Hash ]
   A      1
   B      2
   C     -99
      ...

[ Hash ][ Value ]
   -99      -8
    1       1.6
    2       1.5
      ....
哈希表可能是这样的:

[ Key ][ Value ]
   A      1.5
   B      1.6
   C      -8
     ....
[ Key ][ Hash ]
   A      1
   B      2
   C     -99
      ...

[ Hash ][ Value ]
   -99      -8
    1       1.6
    2       1.5
      ....
我希望这对你有帮助。任何能更好地解释它的人,都可以毫不犹豫地这样做

谢谢你,祝你好运。

请参见下面的类似问题: