为了账号安全,请及时绑定邮箱和手机立即绑定

.NET HashTable与字典-字典可以这么快吗?

.NET HashTable与字典-字典可以这么快吗?

莫回无 2019-10-23 16:50:12
我试图弄清楚何时以及为什么使用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>。


查看完整回答
反对 回复 2019-10-23
?
心有法竹

TA贡献1866条经验 获得超5个赞

哈希表和字典之间的区别

字典:

  • 如果我们尝试找到不存在的键,则字典返回错误。

  • 字典比哈希表更快,因为没有装箱和拆箱。

  • 字典是一种通用类型,这意味着我们可以将其与任何数据类型一起使用。

哈希表:

  • 如果我们尝试查找不存在的键,则Hashtable返回null。

  • 哈希表比字典慢,因为它需要装箱和拆箱。

  • 哈希表不是通用类型,


查看完整回答
反对 回复 2019-10-23
  • 3 回答
  • 0 关注
  • 552 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信