ArrayList
(1) ArrayList非常类似数组,也称为数组列表,ArrayList可以动态维护。数组的容量是固定的,而ArrayList的容量可以根据需要来自动扩充,它的索引会根据程序的扩展而重新进行分配和调整ArrayList提供了一系列方法对其中的元素进行访问,增加删除操作。
(2)ArrayList类属于System.Collections命名空间,这个命名空间包含接口和类,这些接口和类定义各种对象(比如列表,队列,位数组,哈希表和字典)的集合。ArrayList就属于集合的一种,因此在使用ArrayList类之前一定要引入System.Collections命名空间
using System.Collections; //创建容量为0的ArrayList对象 ArrayList student=new ArrayList(); //创建容量为5的ArrayList对象 ArrayList teachers=new ArrayList(5);
属性名称 说明
count 获取ArrayList中的实际包含的元素数
返回值类型 方法名称 说明
int Add(Object value) 将对象添加到ArrayList的结尾处
void RemoveAt(int index) 移除ArrayList指定索引处的元素
void Remove(Object value) 从ArrayList中移除特定对象
void Clear() 从ArrayList中移除所有元素
1.给ArrayList添加数据
返回值:值是一个int整型,用于返回所添加的元素的索引。
参数:向ArrayList中添加的元素是值类型,这些元素就都会装箱处理装换为Object引用类型。然后保存,因此ArrayList中的所用元素都是对象的引用
private void btntest_Click(object sender,EventArge e){ //建立部门工程师集合 ArrayList list =new ArrayList(); //初始化一个员工 SE se=new SE(); se.Name="王小毛"; //名称 se.Id=101; //工号 se.Age=17; //年龄 list.Add(se); MessageBox.Show("部门有几个员工"+list.Count.ToString()); }
using System.Collections; //创建容量为0的ArrayLst对象 ArrayList stu=new ArrayList(); //创建容量为5的ArrayList对象 ArrayList tea=new ArrayList(5);
存取ArrayList中的单元素
SE engineer=(SE)engineers[0]; MessageBox.show(engineer.SayHi());
遍历ArrayList中的元素
static void Main(string[] args) { int[]array=new int[]{0,1,2,3,4}; for(int i=0;i<array.Length;i++) { console.WriteLine(array[i]) } }
泛型集合 Dictionary<K,v>
Dictionary<k,v> 它具有泛型的全部特性,编译时检查类型约束,获取元素时无须类型转换,并且它存储数据的
方式和Hashtable类似,也是通过key / value(键/值)对元素的保存。
语法:
Dictionary<k,v>对象名 =new Dictionary<k,v>();
如:Dictionary<string,SE> engineers =new Dictionary<string,SE>();
List《T》与ArrayList的区别
List《T》 ArrayList
异同点: 对所保存元素进行类型约束 可以增加任何类型
添加/读取值类型元素无需拆箱和装箱 添加/读取值类型元素须拆箱和装箱
相同点: 通过索引访问集合中的元素
通过索引访问集合中的元素
添加和删除元素方法相同
获取Hashtable的元素
和ArrayList不同,访问Hashtable元素时可以直接通过剑3名来获取具体值,同样,
由于值类型是Object,所以当得到一个值时,也需要通过类型转换得到指定类型的
对象。
Hashtable engineers=new Hashtable (); //访问单个元素 Hashtable eng = (SE) eng["000"]; MessageBox.Show(se23.SayHi());
3.删除Hashtable的元素
通过键(key),使用Remove()方法就可以删除Hashtable的元素。
//删除元素 engineers.Remove("000");
4遍历Hashtable中的元素
由于Hashtable不能通过索引访问,所以遍历一个Hashtable只能用(foreach)方法。
//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中的值元素 }
Dictionary<k,v>和Hashtable的对比
Dictionary<k,v> Hashtable
不同点: 对所保存元素进行类型约束, 可以增加任何类型
添加/读取值类型元素无须拆箱和装箱 添加/读取值类型元素须拆箱和装箱
相同点: 通过索引访问集合中的元素,添加和删除元素方法相同,遍历方法相同,通过key获取Value