字典和哈希表之间的主要区别是啥
Posted
技术标签:
【中文标题】字典和哈希表之间的主要区别是啥【英文标题】:What is the primary difference between Dictionary and Hashtable字典和哈希表之间的主要区别是什么 【发布时间】:2011-07-07 22:17:12 【问题描述】:字典和哈希表有什么区别。我如何才能得出使用哪个结论?谁能帮帮我?
【问题讨论】:
***.com/questions/301371/… 查看以下类似问题:***.com/questions/1089132/… 【参考方案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】:哈希表已过时。始终使用字典。
【讨论】:
以上是关于字典和哈希表之间的主要区别是啥的主要内容,如果未能解决你的问题,请参考以下文章