猿问

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

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

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

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


莫回无
浏览 553回答 3
3回答

幕布斯6054654

System.Collections.Generic.Dictionary<TKey, TValue>和System.Collections.Hashtable类都在内部维护哈希表数据结构。它们都不能保证保留项目的顺序。除了装箱/拆箱问题外,大多数情况下,它们应该具有非常相似的性能。它们之间的主要结构差异是Dictionary依靠链接(为每个哈希表存储桶维护一个项目列表)来解决冲突,而Hashtable使用重新哈希化来解决冲突(当发生冲突时,尝试使用另一个哈希函数将键映射到存储桶) 。Hashtable如果您针对.NET Framework 2.0+ ,则使用类几乎没有好处。有效地使它过时了Dictionary<TKey, TValue>。

心有法竹

哈希表和字典之间的区别字典:如果我们尝试找到不存在的键,则字典返回错误。字典比哈希表更快,因为没有装箱和拆箱。字典是一种通用类型,这意味着我们可以将其与任何数据类型一起使用。哈希表:如果我们尝试查找不存在的键,则Hashtable返回null。哈希表比字典慢,因为它需要装箱和拆箱。哈希表不是通用类型,
随时随地看视频慕课网APP
我要回答