为什么Dictionary比Hashtable更受欢迎?
在大多数编程语言中,字典比hashtables更受欢迎。 这背后的原因是什么?
对于它的价值,一个字典(概念)的哈希表。
如果你的意思是“为什么我们使用Dictionary<TKey, TValue>
类而不是Hashtable
类?”,那么这是一个简单的答案: Dictionary<TKey, TValue>
是一个泛型类型,而Hashtable
则不是。 这意味着你使用Dictionary<TKey, TValue>
获得类型安全性,因为你不能插入任何随机对象,并且你不需要转换你取出的值。
有趣的是,.NET Framework中的Dictionary<TKey, TValue>
实现基于Hashtable
,正如你可以从源代码中的这条评论中看出的那样:
通用词典是从Hashtable的源文件中复制而来的
资源
Dictionary
<<< >>> Hashtable
差异:
Synchronized()
方法提供线程安全版本 KeyValuePair
<<< >>>枚举项: DictionaryEntry
Dictionary
/ Hashtable
相似之处:
GetHashCode()
方法 类似的 .NET集合(用来代替Dictionary和Hashtable的候选):
ConcurrentDictionary
- 线程安全 (可以同时从多个线程安全地访问) HybridDictionary
- 优化性能 (对于少数项目以及对许多项目) OrderedDictionary
- 可以通过int索引访问值(按照添加项目的顺序) SortedDictionary
- 自动排序的项目 StringDictionary
- 为字符串强类型化和优化 因为Dictionary
是一个泛型类( Dictionary<TKey, TValue>
),所以访问它的内容是类型安全的(也就是说,你不需要使用Object
来Object
,就像使用Hashtable
)。
比较
var customers = new Dictionary<string, Customer>();
...
Customer customer = customers["Ali G"];
至
var customers = new Hashtable();
...
Customer customer = customers["Ali G"] as Customer;
然而, Dictionary
是作为Hashtable
内部实现的,所以在技术上它的工作原理是一样的。
上一篇: Why is Dictionary preferred over Hashtable?
下一篇: break vs. continue