我试图弄清楚何时以及为什么使用字典或哈希表。我在这里做了一些搜索,发现人们在谈论我完全同意的 Dictionary 的一般优势,这导致了装箱和拆箱优势以获得轻微的性能提升。
但我也读过字典不会总是按照插入的顺序返回对象,它是排序的。HashTable 会在哪里。据我了解,这导致 HashTable 在某些情况下要快得多。
我的问题是,这些情况可能是什么?我在上面的假设中是错的吗?您可以在什么情况下选择其中一个(是的,最后一个有点模棱两可)。
System.Collections.Generic.Dictionary<TKey, TValue>和System.Collections.Hashtable类都在内部维护一个哈希表数据结构。 他们都不能保证保持项目的顺序。
System.Collections.Generic.Dictionary<TKey, TValue>
System.Collections.Hashtable
撇开装箱/拆箱问题不谈,大多数时候,它们应该具有非常相似的性能。
它们之间的主要结构区别在于Dictionary依赖 链接 (维护每个哈希表存储桶的项目列表)来解决冲突,而Hashtable使用 重新哈希 解决冲突(发生冲突时,尝试另一个哈希函数将密钥映射到存储桶) .
Dictionary
Hashtable
Hashtable如果您的目标是 .NET Framework 2.0+,那么使用类几乎没有什么好处。它实际上已经过时了Dictionary<TKey, TValue>。
Dictionary<TKey, TValue>