字典可以一样快吗?

我想弄清楚何时以及为什么要使用Dictionary或HashTable。 我在这里做了一些搜索,发现人们在谈论字典的通用优势,我完全同意这种看法,这会带来拳击和拆箱优势,从而获得轻微的性能提升。

但是我也读过字典并不总是按照它们插入的顺序返回对象,它对它进行排序。 作为HashTable将在哪里。 据我所知,这导致HashTable在某些情况下要快得多。

我的问题是,这些情况会是什么? 我在上面的假设中错了吗? 你可以用什么情况来选择一个在另一个之上,(是的,最后一个有点模糊)。


System.Collections.Generic.Dictionary<TKey, TValue>System.Collections.Hashtable类都在内部维护哈希表数据结构。 他们中没有人保证保存项目的顺序。

抛开拳击/拆箱问题,大多数时候,他们应该有非常相似的表现。

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

如果您的目标是.NET Framework 2.0+,那么使用Hashtable类几乎没有什么好处。 它被Dictionary<TKey, TValue>有效渲染。


我想现在对你来说没有任何意义。 但仅供参考

性能测试 - SortedList与SortedDictionary与字典与哈希表


另一个重要区别是Hashtable类型支持同时锁定多个阅读器和一个作者,而Dictionary不支持。

链接地址: http://www.djcxy.com/p/30409.html

上一篇: Can the Dictionary be as fast?

下一篇: Which is preferred: Nullable<>.HasValue or Nullable<> != null?