一、集合概述
1.1 概念
用以存储数据,将紧密相关的数据组合到一个集合中。
1.2 集合与数组的区别
数组一旦定义,无法改变其大小;集合可以动态的调整大小。
二、集合类别
*ArrayList :保存object类型的数组列表(什么类型都可以:int、double、string...)
*HashTable:散列表,可通过关键字访问值
*Queue:队列
*Stack:堆栈
*StringDictionary:将键和值强类型转化为字符串而不是对象来实现哈希表
*SortedList:表示键、值对的集合,这些键值对按键排序并可按照键和索引访问
三、ArrayList类
3.1 概念:特殊的数组,通过添加和删除元素可以动态改变数组的长度。命名空间:Using System.Collection's;
3.2 添加元素
3.2.1 Add()追加元素
ArrayList alist=new ArrayList();
alist.Add(“a”);//将string'类型的a放入alist
alist.Count //代表这个集合的长度
3.2.2 Insert()插入元素
alist.Insert(0,“b”);//在集合的第一个位置插入string类型的b;
alist.Insert(3,‘c’);//在集合的第四个位置插入char类型的c;
3.3 删除元素
3.3.1 Remove()删除指定元素
alist.Add(“a”);
alist.Add(“b”);
alist.Remove(“a”);//删除集合中a这个元素
3.3.2 RemoveAt()按索引删除元素
alist.RemoveAt(3);//删除第四个位置的元素
3.3.3 Clear()删除所有元素
alist.Clear();//类似于一个方法,直接使用,没有参数
3.3.4 Sort()排序
alist.Sort();//对集合alist进行升序排列
3.3.5 查找
3.3.5.1 IndexOf() 搜索指定元素,返回第一个匹配项的从零开始的索引(返回的是该元素在集合中的位置)
alist.IndexOf(“a”);//第一次出现元素a的位置;
alis.IndexOf(“a”,2);//第二次出现元素a的位置;...........
3.3.5.2 LastIndexOf()搜索最后一个匹配项,从后往前搜索
3.3.5.3 Contains确定某个元素是否在集合中
alis.Constains(“a”);//检测a是否存在于集合alist中,是的话返回True,否的话返回False
四、Stack类
4.1 概念:后进先出的集合。命名空间:Using System.Collections;
4.2 入栈:Push
Stack sk=new Stack();
foreach(int i in new int[4] {1,2,3,4})
{
sk.Push(i);//填充sk
} //遍历后得到4,3,2,1(后进先出);
4.2 出栈:Pop
sk.Pop()//出栈一个元素;
4.3 Peek
sk.Peek()//查看栈顶对象但不出栈
五、Queue类
5.1 概念:队列,先进先出 命名空间:Using System.Collections;
5.2 添加Enqueue
Queue qu=new Queue();
foreach(int i in new int[4] {1,2,3,4})
{
qu.Enququ(i);//填充qu
} //遍历后得到1,2,3,4(先进先出);
5.3 移出并返回队列开始的对象 -- Dequeue
qu.Dequeue();类似于Stack中的Pop;
5.4 Peek返回队列开始处的对象但不移除
sk.Peek()//查看队列开始处的对象但不移出
六、HashTable类
6.1 概念:键、值对的集合。命名空间:Using System.Collections;
6.2 添加Add及遍历显示
例:
HashTable ht=new HashTable();
ht.Add(“name”,“唐僧”);
ht.Add(“age”,28);
.........
//ht.Add(“name”,“玄奘”);//这个是错误的---关键字不能重复!!!
foreach(DictionaryEntry de in ht)
{
console.WriteLine(“{0}-----{1}”,de.Key,de.Value);
}
输出结果:
name---唐僧
age---28
6.3 Remove 移除键和值
ht.Remove(“name”);//代表移除了name这一键和值
6.4 应用
如果只知道Key且不知道Value,并且需要频繁修改,那么需要使用HashTable,因为HashTable添加删除时无序的,速度快。
七、StringDictionary类
7.1 概念:与HashTable类似,但是键和值固定存放字符串。命名空间:Using System.Collections.Specialized;
7.2 注意事项:
使用上与HashTable基本相同,但是注意 键 不区分大小写,所有的 键 都会自动转化成小写。
与HashTable相比,性能更好,省去了装箱拆箱的过程。
八、SortedList类
8.1 概念:与HashTable类似,这些键值对按键排序并可按照键和索引(位置)访问,命名空间:Using System.Collections;
8.2 使用:
SortedList会自动进行排序;
SortedList sl=new SortedList();
console.Writeline(sl.GetByIndex(1));//代表的是获取排序后第二个键所对应的值;