首页 > 代码库 > 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# 集合