C#中ArrayList和Hashtable有什么区别?

kal*_*lai 2 c#-3.0

我想在ArrayList或Hastable中存储一组数据,但数据回溯应该是高效和快速的.我想知道ArrayList和Hastable之间的数据结构隐藏(即链接列表,双链表)

Jam*_*are 6

An ArrayList是一个动态数组,随着新项目的增加而增长,超出了列表的当前容量.ArrayList中的项目由索引访问,非常类似于数组.

Hashtable是幕后的哈希表.底层数据结构通常是一个数组,但不是通过索引访问,而是通过一个键字段访问,该字段通过调用密钥对象的GetHashCode()方法映射到哈希表中的一个位置.

在一般情况下,ArrayListHashtable不鼓励在.NET 2.0及以上赞成List<T>Dictionary<TKey, TValue>它们更好的通用性能更好,并没有值类型装箱费用版本.

我有一篇博客文章,比较了这里可能有用的每个通用容器的各种好处:

http://geekswithblogs.net/BlackRabbitCoder/archive/2011/06/16/c.net-fundamentals-choosing-the-right-collection-class.aspx

虽然它谈论,特别是通用collecitons,ArrayList将有类似的复杂性成本List<T>HashtableDictionary<TKey, TValue>