首页 > 代码库 > C# 集合
C# 集合
前面讲的数组,数组类型必须是同类型,而且限定长度
那么假设有不知道多少个变量,有几个类型 一块处理起来特别麻烦 那么就有了集合
特点: 不同类型 长度不固定
要使用集合,必须先引用命名空间 Using System.Collections
放在这里面
集合有六大类
弱类型 ArrayList集合
强类型(泛类型) List集合
哈希表集合 (弱类型) Hashtable集合
字典(强) Dictionary集合
特殊: 队列集合 Queue集合
栈桥集合 Stack集合
一、ArrayList集合
ArrayList与Array名字相似,但是都有异同
相同点:可以使用整数索引寻找变量元素,包括 取值和赋值,索引都是从0开始
都是统一操作数据
不同点:
⑴ArrayList是集合,Array是数组;
⑵ArrayList是具体类,Array是抽象类;
⑶数组必须在实例化制定元素的数量,该数量一旦确定不可以更改了,类型必须同类型
Array集合实例化不指定集合元素,数量可以无数个,不确定,还可以插队,可以指定初始容量
⑷数组获得元素数量用Length,而集合获得元素数量是使用Count
⑸数组可以多维,集合只能是一维
定义
ArrayList s=new ArrayList(); //(集合类型) ArrayList 变量=new ArrayList;
s.Add(); //变量.Add( 添加的东西,不是索引) object类型:所有类型的基础类型(基类)int string double bool Datetime...什么类型都可以
赋值
ArrayList arr =new ArrayList();
arr.Add(10);
arr.Add("aaa");
arr.Add(true);
arr.Add(10.3);
arr.Add(2017-3-2);
取值
和数组一样 都是用索引取值
arr[0]=10; //都是从0开始
arr[1]="aaa";
arr[2]=true;
集合的数量 arr.count=5;// 里面添加5个元素 数量就是5
集合插队一个元素
arr.Insert(2,333) //就是把索引2前面插一个元素333 把原来索引2位置往后挤一下
arr.Insert(索引,值/变量)
移除:
arr.Remove(10.3); //就是集合里面的10.3 移除了
arr.Remove(值);
arr.RemoveAt(索引);
反转:
arr.Reverse(); - 全部反转
arr.Reverse(索引,个数); - 指定反转
清空:
arr.Clear(); //把之前的数据清空
包含:
arr.Contains(值/变量);//确定某个值、变量是否在集合里面
匹配:
arr.IndexOf(值变量);//从集合寻找某个值、变量的第一个匹配项的索引
二、强类型 List集合 上面用的类型太乱了 固定一个类型
比如:
不同一类型
系统报错
List<T> //T代表泛型 必须给它一个类型
定义
List<int> a=new List<int>();
List<string>a=new List<string>();
List<基础类型>变量=new List<类型>();
赋值
List<int>a=new List<int>();
a.Add(值); 和上面的集合一样// 集合基本都是这样
取值
a[索引]=值/变量;集合基本都是这样
上面的功能都能用
三、哈希表集合 Hashtable集合 弱类型
哈希表集合 没有索引 可以用键代表
不允许插队
命名空间
加上 Using Ystem.Collections
定义 赋值
Hashtable hs=new Hashtable();
hs.Add(1,"呵呵"); // 1代表键1 呵呵代表值
hs.Add("aaa","哈哈");// 键aaa 值是哈哈
Console.Write(hs[1]);//括号里面也可以写为hs.["aaa"]
那么显示的就是呵呵
循环取值打印
打印键是
打印值就是把Key改为Values
显示是
四、字典:强类型
Dictionary<int, string> dic = new Dictionary<int, string>();
五、队列集合 Queue
先进先出
定义
Queue a=new Queue();
赋值
a.Enqueque("aaa"); //进第一个队列是aaa
a.Enqueue(111); //进第二个队列是111
a.Dequeque();//移除并且返回开始的对象
Console.Write(a.Dequeque());//显示aaa 意思就是最靠前的那个人显示并且走人 剩下1个人
a.Enqueque 进队列
a.Dequeque 出队列
a.clear 清空
六、栈桥集合 Stack集合
先进后出来
Stack aaa=new Stack();
aaa.push("asd");// 推进去一个asd
aaa.push(111);// 推进去一个111
Console.Write(aaa.pop());//显示的是111 意思就是把最后一个拽出来(弹出来) 111 并且抽走 还剩下1个
C# 集合