小编典典

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

all

我试图弄清楚何时以及为什么使用字典或哈希表。我在这里做了一些搜索,发现人们在谈论我完全同意的 Dictionary
的一般优势,这导致了装箱和拆箱优势以获得轻微的性能提升。

但我也读过字典不会总是按照插入的顺序返回对象,它是排序的。HashTable 会在哪里。据我了解,这导致 HashTable 在某些情况下要快得多。

我的问题是,这些情况可能是什么?我在上面的假设中是错的吗?您可以在什么情况下选择其中一个(是的,最后一个有点模棱两可)。


阅读 80

收藏
2022-04-26

共1个答案

小编典典

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

撇开装箱/拆箱问题不谈,大多数时候,它们应该具有非常相似的性能。

它们之间的主要结构区别在于Dictionary依赖 链接 (维护每个哈希表存储桶的项目列表)来解决冲突,而Hashtable使用 重新哈希
解决冲突(发生冲突时,尝试另一个哈希函数将密钥映射到存储桶) .

Hashtable如果您的目标是 .NET Framework
2.0+,那么使用类几乎没有什么好处。它实际上已经过时了Dictionary<TKey, TValue>

2022-04-26