C# 集合
1.什么是集合:
分散的人或事物聚焦到一起,使聚焦,紧急集合
2.好处:
将类似的数据在作为集合而存储和操作时通常可以得到更高效地处理
集合接口家族(注:→ 标识着继承了接口)
![在这里插入图片描述](https://img-blog.csdnimg.cn/935ae3552e7f498a95803b23565cd87e.png
- IEnumerable:它定义了一个用于遍历集合的枚举器(enumerator),是集合类的基石接口,并提供了一个GetEnumerator()方法用户返回一个枚举器,通过foreach循环,对集合每项访问
- IEnumerable:实际开发过程过,通过泛型定义接口,实现类型安全的迭代器,来约束类型,避免装箱和拆箱,消耗性能
- ICollection:继承了IEnumerable接口,使用这个接口可以获取集合的元素个数[Count]、复制[CopyTo]、添加[Add]、删除[Remove]、清除[Clear]
- IList:IList继承了IConllection,可按照索引单独访问的对象的集合,方法:父类有的方法 + IndexOf,Insert
- ISet:提供了具有唯一元素、无须的和特定操作的集合
- IDictionary:是键/值对的集合,key是唯一性的
集合为什么要设计这么多接口,依据了什么原则:
集合按照了接口隔离原则:指客户端程序不应该依赖于它不需要的接口
接口隔离原则的核心思想:是把大的接口拆分成小的接口,让接口尽可能的精简,同时,确保接口之间的关系尽量松散,所以不言而喻,但接口足够精简,那么需要的接口继承即可,从而降低耦合性
派生实现关系图
可以分为主要的三种类型
一、线型结构(不使用泛型时,对象为object)
- List:特征是线性方式仓储,集合可以存放重复对象,可以索引访问,性能:读取快,删慢
- LinkedList:特征是链表数据结构,元素不连续分配,每个元素都有记录前后节点,不能索引访问,性能:增删快,读取慢
- Queue:特征是队列,先进先出原则,无法通过下标查找元素,不能在指定位置插入元素,且不带排序功能
- Stack:特征是栈,先进后出原则
二、Set集合
Set是最简单的一种集合,唯一性 无序的
- HashSet:元素间没关系,动态增加容量 去重
- SortedSet:去重 而且排序
三、key\value集合
是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象
- Dictionary:key - value,增删查改 都很快;有序的,通过键和索引来访问
- SortedList:通过键和索引来访问
- SortedDictionary:通过键和索引来访问