【发布时间】:2010-09-23 00:23:20
【问题描述】:
在大多数编程语言中,字典比哈希表更受欢迎。 背后的原因是什么?
【问题讨论】:
-
> 这不一定是真的。哈希表是字典的实现。一个典型的,它可能是 .NET 中的默认值,但根据定义它不是唯一的。我不确定这是否是 ECMA 标准所要求的,但MSDN documentation 非常清楚地指出它是作为哈希表实现的。当替代方案更合理时,它们甚至提供 SortedList 类。
-
@Promit 我一直认为
Dictionary是Hashtable的实现。 -
我认为原因是,您可以在字典中定义键的类型和自拍的值。 Hashtable 只能获取对象并根据哈希值保存对(来自 object.GetHashCode() )。
-
@Dan 你的说法是完全错误的......哈希表只包含每个键的一个实例,并且搜索永远不会产生多个条目;如果要将多个值与每个键相关联,请将哈希表值设为值列表。没有像“字典”这样的数据结构......字典只是一些库用于其哈希表的名称。例如,C# 的非泛型哈希表称为
HashTable。当他们将泛型添加到语言中时,他们将泛型版本称为Dictionary。两者都是哈希表。 -
@Dan 你的说法是错误的......哈希表 (en.wikipedia.org/wiki/Hash_table) 是字典的特定实现,也就是关联数组 (en.wikipedia.org/wiki/Associative_array),并且,作为字典,只有包含每个键的一个实例,并且搜索永远不会产生多个条目;如果要将多个值与每个键相关联,请将哈希表值设为值列表。 .NET Dictionary 和 Hashtable 类都是哈希表。
标签: c# .net vb.net data-structures