一尘不染

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

c#

我试图弄清楚何时以及为什么使用Dictionary或HashTable。我在这里做了一些搜索,发现人们谈论我完全同意的《词典》的一般优势,这导致装箱和拆箱的优势略有提高。

但是我也读过Dictionary并不会总是按插入对象的顺序返回对象,而是对其进行排序。像HashTable一样。据我了解,这在某些情况下会导致HashTable更快。

我的问题是,这些情况可能是什么?我在上面的假设中错了吗?您可能会使用哪种情况来选择另一种情况(是的,最后一种情况有点模棱两可)。


阅读 250

收藏
2020-05-19

共1个答案

一尘不染

System.Collections.Generic.Dictionary<TKey, TValue>System.Collections.Hashtable类都在内部维护哈希表数据结构。 它们都不能保证保留项目的顺序。

除了装箱/拆箱问题外,大多数情况下,它们应该具有非常相似的性能。

它们之间的主要结构差异是Dictionary依靠 链接 (为每个哈希表存储桶维护一个项目列表)来解决冲突,而Hashtable使用
重新哈希化 来解决冲突(当发生冲突时,尝试使用另一个哈希函数将键映射到存储桶) 。

Hashtable如果您针对.NET Framework 2.0+ ,则使用类几乎没有好处。有效地使它过时了Dictionary<TKey, TValue>

2020-05-19