Arraylist是一个C#已经封装好的类,它的本质是一个object类型的数组,Arraylist类可以帮我们实现很多方法,比如数组的增删查改等等。但是跟一般的数组比起来,速度上差些。在ArrayList中,我们可以存储相同类型和不同类型的元素。它属于非泛型集合。
那么我们改如何申明Arraylist呢,我们可以使用以下代码来申明:
Arraylist array = new Arraylist();//ArrayList在System.Collections命名空间下定义;因此,在程序中使用Arraylist时,必须添加System.Collections命名空间
ArrayList类有三个用于创建ArrayList的构造函数:
ArrayList():用于创建ArrayList类的实例;该实例为空,且没有初始容量。
ArrayList(Int32):用于创建ArrayList类的实例;该实例为空且具有指定的初始容量。
ArrayList(ICollection):用于创建一个数组列表,该列表使用指定集合中的元素初始化,并且具有从集合复制的相同初始容量。
那我们如何使用Arraylist进行增删查改呢
增:
Array.Add(1); Array.Add(“123”); Array.Add(true); Array.Add(new object()); Array.Add(1); ArrayList array2 = new ArrayList(); Array.Add(123); //范围增加(批量增加,把另一个list容器里面的内容加到后面) Array.AddRange(array2);
删
Array.Remove(1);//删除指定的元素,从头开始寻找,找到之后删除 Array.RemoveAt(2);//删除指定位置的元素 Array.Clear();//清空
查
Console.WriteLine(array[0]);//得到指定位置的元素 If(array.Contaions(“1234”))//查看元素是否存在 { Console.WriteLine(“存在123”); } //正向查找元素位置,如果找到则返回位置的值,如果找不到则返回-1 int index = array.Index0f(true); Console.WriteLine(index); Console.WriteLine(array.Index0f(false)); //反向查找元素位置,返回时从头开始的索引数 int index = array.Index0f(true); Console.WriteLine(index);
改
Console.WriteLine(array[0]); array[0] = “999”; Console.WriteLine(array[0]);
遍历
//长度 Console.WriteLine(array.Count); //容量 避免产生过多的垃圾 Console.WriteLine(array.Capacity); for(int i =0;i<array.Count;i++) { Console.WriteLine(array[i]); } //迭代式遍历 Foreach(object item in array) { Console.WriteLine(item); }
装箱拆箱
ArrayList本质上是一个可以自动扩容的object数组,由于用万物之父来存储数据,自然存在装箱拆箱。当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使用时,就存在拆箱。所以我们ArrayList尽量少用。
举个例子:
int i=1; Array[0]=i;//装箱 I=(int)array[0];//拆箱