C#集合命名空间、接口及类型

一、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
       

转载于:https://www.cnblogs.com/qjym/p/6939952.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值