持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
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];//拆箱