我正在尝试找出何时以及为何使用字典或哈希表。我在这里做了一些搜索,发现人们在谈论我完全同意的字典的通用优势,这导致了装箱和拆箱的优势,从而获得了轻微的性能提升。
但是我也读过字典不会总是按照插入的顺序返回对象,它是排序的。哈希表将在哪里。据我了解,这会导致 HashTable 在某些情况下更快。
我的问题是,这些情况可能是什么?我上面的假设是不是错了?您可能会在什么情况下选择一个优先于另一个,(是的,最后一个有点模棱两可)。
最佳答案
System.Collections.Generic.Dictionary<TKey, TValue>
和 System.Collections.Hashtable
类都在内部维护一个哈希表数据结构。 它们都不保证保留项目的顺序。
撇开装箱/拆箱问题不谈,大多数时候,它们的性能应该非常相似。
它们之间的主要结构差异是 Dictionary
依靠链接(为每个哈希表桶维护一个项目列表)来解决冲突,而 Hashtable
使用重新散列解决冲突(发生冲突时,尝试另一个散列函数将 key 映射到存储桶)。
使用 Hashtable
几乎没有什么好处如果您的目标是 .NET Framework 2.0+,则为类。它实际上已被 Dictionary<TKey, TValue>
废弃.
关于c# - .NET HashTable 与 Dictionary - Dictionary 能一样快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089132/