--集合概述。
可以动态扩容,可以指定长度,但超出时,下次扩容时是原来的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