C#学习笔记 常用的集合
来源:互联网 发布:nfc读卡软件 编辑:程序博客网 时间:2024/05/29 14:35
列表List< T>
列表List< T>实现了IList、ICollection、IEnumberable、IList接口。可以向该列表中动态的添加、删除、查找元素。如果列表中的元素满了,会动态分配一个容量是原来两倍的列表。为了避免多次重新分配内存带来的系统开销,如果事先知道所使用的列表的最大值,可以为列表预先分配足够的容量。
使用Capacity属性读取和设置容量。如果不需要添加元素,可以使用TrimExcess()方法,去掉不需要的容量。
可以使用一个已有的数组初始化列表,或者也可以使用初始值设定语法。
int[] array = { 1, 2, 3, 4, 5 }; List<int> list = new List<int>(); //或者直接List<int> list = new List<int>(){ 1, 2, 3, 4, 5 };
添加元素使用Add()方法。也可以使用AddRange()方法一次性添加多个元素。
插入元素使用Insert()方法。也可以使用InsertRange()方法一次性插入多个元素。
列表实现了IList接口,而IList接口中实现了索引器。因此列表可以直接使用索引器访问元素,就像数组一样。
可以用Count属性查看列表有多少个元素。
还可以利用ForEach()方法对集合中的每一项执行一些操作。该方法的参数是一个委托:Action< T> action
。例如,输出列表中的每一个数字。
static void Main(string[] args){ int[] array = { 1, 2, 3, 4, 5 }; List<int> list = new List<int>(array); list.ForEach(e => Console.WriteLine(e));}
删除元素使用RemoveAt()方法,既可以传递下标删除指定索引处的元素,也可以传递要删除的元素。但是一般情况下前者要更高效一点,因为后者需要先定位元素然后才能删除。还可以利用RemoveRange()方法一次性删除多个元素。
常用的查找方法有IndexOf()、LastIndexOf()、FindIndex()、FindLastIndex()、Find()、FindLast()。可以使用Exists()方法查看某元素是否在集合中存在。
排序可以使用Sort()方法。重载的Sort()方法可以添加一个比较器, 以实现自定义排序。
可以使用ConvertAll()方法,将一种类型的列表转换为另外一种类型的列表。
队列Queue< T>
队列也就是先进先出(FIFO)的列表,队列实现了ICollection和IEnumberable< T>接口,但是没有实现ICollection< T>接口,因此没有Add()和Remove()方法。也没有实现IList< T>接口,因此不能使用索引器访问。
队列常用的方法和属性如下:
栈Stack< T>
栈和队列类似,不过是后进先出(LIFO)的列表。常用的方法或属性如下:
双向链表 LinkedList< T>
前面的列表List是用数组实现的。在随机访问和想末尾添加元素时比较快。这里的链表则是在链表中间插入元素比较快。
具体方法和列表差不多。详细方法可以查看MSDN。
有序列表SortedList< TKey,TValue>
该集合存储键值对,并按键排序。注意每个键只能对应一个值。而且如果要访问的键不存在,就会抛出异常。因此可以使用Contain()方法先判断是否存在某键或者是用TryGetValue()方法尝试获取值,这样就不会发生异常。
字典Dictionary< TKey,TValue>
字典类存储键值对,内部使用散列法实现,主要用来实现键值对的高效查找。用作键的类型需要重写GetHashCode()和Equals()方法,避免在执行散列函数时出现意外情况。
集合ISet< T>
集合表示没有重复内容的Collection。常用的有无序集合HashSet< T>和有序集合SortedSet< T>。集合含有一些方法可以进行集合的交、并、差等运算。
- C#学习笔记 常用的集合
- C#常用的集合
- C#常用的集合
- Java常用集合类的常用方法 学习笔记
- C#学习笔记08:集合
- c#集合的学习
- c#常用的集合类型
- C#常用集合的使用
- C#常用集合的使用
- C#常用集合的使用
- 集合的学习笔记
- Java学习笔记之集合(二):List集合的常用方法
- Java学习笔记之集合(四):LinkedList集合的特点和常用方法
- Java学习笔记44:常用集合使用
- C#学习笔记(八):集合
- c#经典入门学习笔记-定义集合
- c#经典入门学习笔记-定义集合
- 学习笔记3 上午 C# 数组,集合
- KMP模板
- OC06 Block
- 12 个非常实用的 jQuery 代码片段
- select下拉联动 (Bootstrap、JQuery插件之cxselect)
- 最新阿里云推荐码,阿里云9折优惠码分享 : 2GHQXP
- C#学习笔记 常用的集合
- OC06 数组高级
- Json使用整理
- Google Interview Questions: Software Engineer
- 最大生成树(Greedy Algorithm)
- Java并发编程:Lock
- (模板)多项式乘法对任意数取模
- 单调栈 poj2559 Largest Rectangle in a Histogram
- swift 快速奔跑的兔几 本节的内容是:UIDynamic:UI和重力