一、C#集合的命名空间
1.System.Collections //非泛型集合
2.System.Collections.Generic //泛型集合
3.System.Collections.Specialized //特定集合
4.System.Collections.Concurrent //支持并发的线程安全集合
5.System.Collections.ObjectModel //可观察的集合,该命名空间下的ObservableCollection集合类专用于WPF,
其特性是集合属性发生变化时可将变更通知到UI以便及时刷新UI.
二、常见集合接口表
C#常见集合接口 |
|||
接口 |
用途 |
||
非泛型接口 |
IEnumerator |
||
IEnumerable |
|||
ICollection |
|||
IDictionary |
|||
IList |
|||
泛型接口 |
IEqualityComparer<T> |
相等性比较 |
|
IComparer<T> |
排序 |
||
IEnumerator<T> |
枚举器接口,用于遍历集合元素(实现该接口将能够享受foreach语法糖)。 |
||
IColletion<T> |
提供获取集合基本属性和操作的方法,包括
元素个数、 清空集合、 添加元素、 删除元素、 元素包含检验、 集合范围复制 |
||
IList<T> |
获取或移除指定位置元素(索引访问方式)、
在指定位置插入元素 计算指定元素位置 |
||
IDictionary<TKey,TValue> |
访问键和值的接口 |
||
ISet |
集合的布尔操作接口,包括集合的并、交、差、(真)子集和(真)超集检验等 |
||
IProducerConsumerCollection<T> |
支持线程安全的接口(.NET 4增加) |
三、常见集合表
C#常见集合表(注意:n/a为not applicatable,表示该操作不能应用于该类型集合) |
||||||||
分类 |
集合名称 |
元素访问方式 |
增加 |
插入 |
删除 |
排序 |
检索 |
特点 |
非关联性集合 |
List<T>
(列表) |
Index |
如果集合必须重置大小,就是O(1)或O(n) |
O(n) |
O(n) |
O(n,logn),最坏情况是O(n^2) |
①当重置集合大小时将会增加时间复杂度
②功能齐全方便,适用于小型集合 |
|
LinkedList<T>
(双向链表) |
只能选择从头或尾部按照前后关系遍历访问 |
O(1) |
O(1) |
O(1) |
n/a |
n/a |
①访问效率低下,必须从头尾遍历
②元素的添加和删除非常高效 |
|
Queue<T>
(队列) |
只能获取底部元素 |
如果集合必须重置大小,就是O(1)或O(n) |
n/a |
O(1) |
n/a |
n/a |
FIFO |
|
Stack<T>
(栈) |
只能获取顶部元素 |
n/a |
O(1) |
n/a |
n/a |
FILO |
||
HashSet |
只能通过IEnumerator遍历访问 |
O(1)或O(n) |
O(1) |
n/a |
n/a |
①均实现ISet接口,ISet接口表示集,所谓集为不含重复元素的集合,因此可保证元素的唯一性
②支持集合运算(并、交、差、(真)子集、(真)超集关系运算) |
||
SortedSet |
O(1)或O(n) |
O(1) |
n/a |
n/a |
||||
关联性集合 |
Dictionaty<TKey,TValue> |
Key |
O(1)或O(n) |
n/a |
O(1) |
n/a |
n/a |
排序、检索性能取决于TKey实现的GetHashCode方法 |
SortedDictionary<TKey,TValue> |
Key |
O(logN) |
n/a |
O(logN) |
n/a |
n/a |
||
SortedList<TKey,TValue> |
Key |
无序数据为O(n);
如果必须重置大小就是O(n); 到列表尾部就是O(logN) |
n/a |
O(n) |
n/a |
n/a |
||
Lookup<TKey,TValue> |
Key |
①一键多值
②无构造函数,仅能通过静态扩展方法ToLookup创建 |
||||||
位数组 |
BitArray |
Index |
可基于int数组A创建位数组B,A中的每一个数字将转换为32位二进制形式,并将每一bit位值转换为true/false,最终B中的值只有true/false两种取值 |
|||||
BitVector32 |
①最多32位的位数组
②值类型,性能比BitArray高 |
|||||||
并发集合 |
ConcurrentQueue |
|||||||
ConcurrentStack |
||||||||
ConcurrentBag |
||||||||
ConcurrentDictionnary |
||||||||
BlockingCollection |
时间: 2024-11-05 13:34:34