C#中的集合类整理

来源:互联网 发布:it最新动态 编辑:程序博客网 时间:2024/06/11 20:12

System.Collections:

ArrayList:实现了IList接口的类,可以储存任意类型(object)的value,可索引。
BitArray:记录布尔值的数组,可以用bool[]或者int[]作为参数使用它的构造函数。可索引。
Queue:先进先出的队列,可以储存任意类型(object)的value,操作元素的方法有Enqueue,Dequeue和Peek。不可索引。
Stack:后进先出的栈,可以储存任意类型(object)的value,操作元素的方法有Push,Pop和Peek。不可索引。
SortedList :可以储存任意类型(object)的key和value,并且可以用index来索引key和value。可索引。
Hashtable:哈希表,类似于Dictionary,对于小型的string类型效率比较高,添加速度快,查找速度不及Dictionary< T, T>。可以储存任意类型(object)的key和value,可使用key索引。

System.Collections.Generic:

List< T, T >:泛型数组,顺序储存T类型的数据,可使用index索引
HashSet< T>:泛型哈希Set,可以储存不重复的任意类型(object)的value,Add添加值时会返回bool值,显示是否添加成功
SortedSet< T >:自动排序的哈希Set,自定义排序方法类似这样:
SortedSet< T > mediaFiles1 = new SortedSet< T >(new ByFileExtension());
ByFileExtension是一个继承并实现了IComparer< T >接口的类。
Queue< T >:泛型类型的队列,可储存T类型的值,不可索引。
Stack< T >:泛型栈,可储存T类型的值,不可索引。

Dictionary< T, T >:泛型字典,储存KeyValuePair< T, T >类型的键值对,可使用key索引。
SortedDictionary< T, T >
SortedList< T, T >
以上三个类用法很近似,区别如下:
Dictionary 的功能:
Add< K, V>, Clear, Contains< K/ V>, GetCount, Enumerator (无序), GetItem< K >, Remove< K >
SortedDictionary 新增的功能:
Enumerator 为有序 - 无论添加顺序,自动按照key的顺序排序,也可自定义排序规则
SortedList 新增的功能:
Capacity(Set/Get) - 它是数组
IndexOfKey, IndexOfValue (返回 Value 对应 Key 的排名而不是 Value 的排名)
Keys(k), Values(k) - 返回按照 Key 排序的数组的第 k 个元素(SortedDictionary不可以对Keys或Values按下标取值);

System.Collections.Specialized:

NameValueCollection:只能储存字符串作为key和value,可以用字符串key和index作为索引来检索,如果添加两个key相同的值,会将value合并
ListDictionary:使用单一链表实现IDictionary,建议在集合项目个数小于10的情况下使用。
HybridDictionary:当集合比较小的时候使用ListDictionary实现IDictionary,当集合比较大的时候使用Hashtable。

0 0