常用集合类、接口及特点
IEnumerator IEnumerator<T> |
实现遍历的基本方法 :Current,MoveNext(),Reset() |
IEnumerable IEnumerable<T> |
最基础的所有集合都实现的可遍历接口,可以和IEnumerator接口合作 |
ICollection ICollection<T> |
无序的集合,包含集合的基本操作,Add(T),Remove(T),Clear(),Contains(),CopyTo |
IList IList<T> |
有序的集合,因此增加了IndexOf(),Insert(int,T),和RemoveAt(int) |
ISet<T> | 没有顺序,元素不可重复,有集合的交,并,去除等操作 |
IDictionary | 最基本的字典接口 |
Array | 就是T[]类型,只能存储相同类型的数据。由于有逆变和协变(即可以数组级别的类型转换),速度很快。固定大小。 |
ArrayList | 动态数组,可以在任意部位增加,删除元素,内部其实是由Array实现。在.NET 2.0之后由于新增List<T>,基本被deprecate了。包括ArrayList在内的集合一般容量(Capacity)都不固定,因此有TrimToSize方法压缩容量。 |
List<T> | 有序集合,最常见,用得最多,各种增删查改都有 |
Stack Stack<T> |
后入先出(LIFO),数据结构栈的C#实现,有Peek():查看顶层元素,Push():入栈,Pop():出栈。 |
Queue Queue<T> |
先入先出(FIFO),数据结构队列的C#实现,有Peek(),Enqueue():入队,Dequeue():出队。 |
Dictionary<Tkey,TValue> | 用的最多的字典泛型 |
HashTable | 键值对形式,基于键的哈希值而组织,没有泛型,因此,现在一般用Dictionary<Tkey,TValue>代替 |
HashSet<T> | 无序集合,并且无法包含重复元素,速度快 |
NameValueCollection | 没有泛型,功能类似于Dictionary<string,string> ,但可以一个键对应多个值(Request.QueryString就是这个类型),一个键可以对应多个值,且以逗号分隔。取出的值为"value1,value2,...valueN"形式。 |
KeyValuePair<Tkey,TValue> | 一个键值对 |
LinkedList | 数据结构链表的C#实现,有AddBefore(LinkedListNode<T>,T),AddAfter,Find(T)等方法 |
SortedList SortedList |
有序键值对 |
HashSet<T> |
实现了ISet接口,无序 |
SortedSet<T> | 实现了Iset接口,有序 |
* 除了Array外,ArrayList和各种集合类型都是动态分布容量(Capacity)的,可以根据TrimToSize方法压缩容量。