在使用数组的过程中,有时候希望数组的长度和元素个数能随程序的运行不断改变,但改变一次就要重新开辟一个新的数组对象,这样将占用内存空间。为了解决这个问题,Microsoft.NET Framework 体统了一个ArrayList类,专门用于处理可按动态增减成员的数组。
ArrayList类被设计成一个动态数组,其容量会随着需要而适当的扩充。在ArrayList集合类中经常使用的方法如下。
Add()方法:向数组中添加一个元素
Remove()方法:删除数组中的某一元素
RemoveAt(int i)方法:删除数组中索引值为i的元素
Reverse()方法:反转数组的元素
Sort()方法:以从小到大的顺序排列数组的元素
Clone()方法:复制一个数组
ArrayList与System.Array的区别有以下几点:
①Array可以定义多维数组,ArrayList只能定义一维数组。
②Array可以定义自己的下限,ArrayList的下限始终是0
③Array的元素通常是特定类型的,Array的元素都是object类型的,所以需要进行装箱和拆箱操作,内存分配的代价高
④Array的元素数目是固定的,ArrayList的元素数目可以自动扩展
⑤ArrayList具有添加、删除、插入、移动、复制等方法
下面的是个小例子
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace ArrayListTest { class Program { static void Main(string[] args) { ArrayList al = new ArrayList(); //单个添加 al.Add(100); //集体添加方发一 foreach (int number in new int[6]{6, 3, 4, 1, 0 ,9}) { al.Add(number); } //集体添加方法二 int[] number2 = new int[2] {15, 21}; al.AddRange(number2); //移除值为3的数 al.Remove(3); //移除第3个数 al.RemoveAt(3); ArrayList al2 = new ArrayList(al.GetRange(1, 3)); Console.WriteLine("遍历方法一"); foreach (int i in al) { //遍历方法一 Console.WriteLine(i); } Console.WriteLine("遍历方法二"); for (int i = 0; i <al2.Count; i++) { //一定要强制转换 int number = (int)al2[i]; Console.WriteLine(number); } Console.ReadLine(); } } }
运行结果如下:
由于移除了位置在3的数和数为3的数字,所以就没有了1和3,结果如上