我试图弄清楚何时以及为什么使用Dictionary或HashTable。我在这里做了一些搜索,发现人们谈论我完全同意的《词典》的一般优势,这导致装箱和拆箱的优势略有提高。但是我也读过Dictionary并不会总是按插入对象的顺序返回对象,而是对其进行排序。像HashTable一样。据我了解,这导致HashTable在某些情况下会快得多。我的问题是,这些情况可能是什么?我在上面的假设中错了吗?您可能会使用哪种情况来选择另一种情况(是的,最后一种情况有点模棱两可)。
3 回答
幕布斯6054654
TA贡献1876条经验 获得超7个赞
System.Collections.Generic.Dictionary<TKey, TValue>和System.Collections.Hashtable类都在内部维护哈希表数据结构。它们都不能保证保留项目的顺序。
除了装箱/拆箱问题外,大多数情况下,它们应该具有非常相似的性能。
它们之间的主要结构差异是Dictionary依靠链接(为每个哈希表存储桶维护一个项目列表)来解决冲突,而Hashtable使用重新哈希化来解决冲突(当发生冲突时,尝试使用另一个哈希函数将键映射到存储桶) 。
Hashtable如果您针对.NET Framework 2.0+ ,则使用类几乎没有好处。有效地使它过时了Dictionary<TKey, TValue>。
心有法竹
TA贡献1866条经验 获得超5个赞
哈希表和字典之间的区别
字典:
如果我们尝试找到不存在的键,则字典返回错误。
字典比哈希表更快,因为没有装箱和拆箱。
字典是一种通用类型,这意味着我们可以将其与任何数据类型一起使用。
哈希表:
如果我们尝试查找不存在的键,则Hashtable返回null。
哈希表比字典慢,因为它需要装箱和拆箱。
哈希表不是通用类型,
- 3 回答
- 0 关注
- 552 浏览
添加回答
举报
0/150
提交
取消