使用集合组织相关数据。

--集合概述。

可以动态扩容,可以指定长度,但超出时,下次扩容时是原来的2倍。

--ArrayList  单列集合

类似于数组,也有人称它为数组列表,可根据需要自动扩充,它的索引会根据程序的扩展而重新进行分配和调整,提供了一系列的方法对其中的元素进行访问,新增和删除。

提示:和数组类似,ArrayList中的存储数据称为元素,可以保存的元素数就是它的容量,其默认值是0;可以通过索引访问ArrayList的元素 ,

是一种动态数组,在new的时候,可以不指定长度,当你添加数据的时候,发现容量不够,他会自动扩容。

ArrayList:是属于System.Collections命名空间,包含接口和类

常用的方法和属性

Count:获取ArrayList中实际包含的元素数。

返回值类型                    方法名称                  说明

int:Add(Object value):将对象添加到ArrayList的结尾处。

void    :RemoveAt(int index):移除ArrayList指定索引处的元素            

void  :Remove(Object  value):从ArrayList中移除特定的对象

void     :Clear():从 ArryaList中移除所有的元素

示例

复制代码
    private void btntest_Click(object sender,EventArge e){
     //建立部门工程师集合
    ArrayList list =new ArrayList();
    //初始化一个员工
    SE se=new SE();
    se.Name="张三";                //名称    
    se.Id=1;                    //工号
    se.Age=1;              //年龄
    list.Add(se);
    MessageBox.Show("部门有几个员工"+list.Count.ToString());  
}
复制代码

集合初始化器:

复制代码
ArrayList list=new ArrayList(){
    //初始化人员信息
     new SE(){Name="毛毛",Age=17,ID=101},       
     new SE(){Name="毛小毛",Age=17,ID=101},

}
MessageBox.Show(string.Formt("部门人员{0}",list.Count.ToString()));
复制代码

遍历ArrayList中的元素

复制代码
//for遍历 
for(int i=0;i<list.Count;i++){
     SE seFor=(SE)list[i];
    Console.WriteLine(seFor.Name);    //for遍历出ArrayList中的Name元素
}   

//foreach遍历
foreach(Object obj in  list){
     SE seFor=(SE)obj;
     Console.WriteLine(seFor.Name);    //foreach遍历出ArrayList中的Name元素
} 
复制代码

删除ArrayList中的元素 

使用 Remove()方法,删除对象名的元素,使用RemoveAt()方法删除索引为几的元素。使用Clear()方法是删除集合中的所有元素,

Contains(Object obj)判定某个元素是否在于集合中
Insert(int index,Object value)在集合指定位置添加元素

Hashtable

Hashtable 通过Add了()方法添加元素,也属于System.Collections命名空间。

Hashtable的数据是通过键(Key)和值(value)来组织的 。

常用的属性和方法

属性名称

Count :获取包含在Hashtable中的键/值对的数目

Keys:获取包含在Hashtable中的集合,Values:获取包含在Hashtable中的集合

返回值类型

void    :Add(Object key,Object vaue)    : 将指定的键/值添加到Hashtable中

void    :Remove(Object key)         :从Hashtable中移除指定的键的元素

void    :Clear()         :从Hashtable中移除所有元素

 示列

复制代码
//new 一个Hashtable的对象
Hashtable has=new Hashtable();
//初始化一个员工的信息
 SE se=new SE();
   se.Name="张三";
   se.ID=1;
   se.Age=17;

 has.Add(se.ID,se);

Console.WriteLine(string.Format("部门{0}个员工",has.Count.ToString()));
复制代码

获取Hashtable的元素

和ArrayList不同,Hashtable可以通过键名来获取具体值,同样,用于值的类型是Object,所有当得到一个值的时候需要通过类型转换得到指定类型的对象。

删除Hashtable的元素

通过键(key),使用Remove()方法就可以删除Hashtable的元素,如:has.Remove("000");

遍历Hashtble元素

复制代码
//foreach遍历
foreach(Object obj in  has.Keys){

          Console.WriteLine((string) obj);    //foreach遍历出Hashtable中的键元素
} 

//foreach遍历
foreach(Object obj in  has.Values){
     SE seFor=(SE)obj;
     Console.WriteLine(seFor.Name);    //foreach遍历出Hashtable中的值元素
} 
复制代码

--泛型和泛型集合

泛型集合List<T>

语法:List<T> 对象名 =new List<T>();

<T>中的T可以对集合中的元素类型进行约束,T表明集合中的管理的元素类型,

示例

复制代码
//建立工程员的集合
List<SE>  engineers=new List<SE>();
//初始化一个工程员工
SE se=new SE();
se.Name="张三";
se.Id=101;
se.Age=1;

engineers.Add(se);

Console.WriteLine(engineers.Count.ToString()+"个员工");
复制代码

使用foreach遍历

foreach(SE ss in engineers){

Console.WriteLine(ss.Name,ss.Id,ss.Age);

}

可以使用索引和对象删除

engineers.RemoveAt(0);    engineers.Remove(ema);

List<T>和ArrayList的区别

                                                List<T>                                                                                                          ArrayList

不同点:对所保存元素进行类型约束,                                                                                              可以增加任何类型

             添加/读取值类型元素无须拆箱和装箱                                                                                  添加/读取值类型元素须拆箱和装箱

相同点:通过索引访问集合中的元素,添加和删除元素方法相同

--泛型集合 Dictionary<k,y>

Dictionary<k,y> 它具有泛型的全部特性,编译时检查类型约束,获取元素时无须类型转换,并且它存储数据的方式和Hashtable类似,也是通过key / value(键/值)对元素的保存。

语法:Dictionary<k,y>对象名 =new Dictionary<k,y>();    如:Dictionary<string,SE> engineers =new Dictionary<string,SE>();  

示例

复制代码
//建立工程员工
Dictionary<string,SE>engineers =new Dictionary<string,SE>();
//初始化一个员工
SE se=new SE();
se.Name="张三";
se.id=1;
se.Age=17;

engineers .Add(se.id,se);

Console.WriteLine(engineers.Count.ToString()+"几个部门人员"); 
   
复制代码

Dictionary<k,y>和Hashtable的对比

                                                                        Dictionary<k,y>                                                                                  Hashtable

不同点:

              对所保存元素进行类型约束,                                                                                              可以增加任何类型

              添加/读取值类型元素无须拆箱和装箱                                                                                  添加/读取值类型元素须拆箱和装箱

相同点:

通过索引访问集合中的元素,添加和删除元素方法相同,遍历方法相同,通过key获取Value

原文地址:https://www.cnblogs.com/liehuonanjue/p/8240906.html