简单数据结构类——Arraylist

90 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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];//拆箱