admin 管理员组

文章数量: 1086019


2024年3月25日发(作者:stacking和神经网络)

4.0 ArrayList集合

C#语言中的ArrayList又被称为动态数组,它的存储空间可以被动态改变,同

时还拥有添加、删除元素的功能。如果要动态地改变数组所占用内存空间的大小,

则需以数组为基础进一步抽象,以实现这个功能。

在现实的工作中,可能会为一组数据发生改变,而来调整大量的程序。例如,

一个班级新转过来10名新同学,而需要这10名新同学能跟原来的学生住在一起。

因此,需要调整这个班级的课桌、宿舍等等。而如果过一段时间,又发生增减学生

的情况,那么还得调整学生相关的内容。

为解决这些问题,在C#语言中可以使用ArrayList集合的方法,动态改变数组

大小的。无论数据增加或者减少,则集合内容会随着数据的变化,而改变存储的内

容。

1.使用ArrayList

在使用ArrayList时,需要通过该对象对所定义的变量进行实例化。如下列实例

化List为ArrayList对象。

ArrayList List = new ArrayList();

在实例化对象过程时,ArrayList还提供了3个构造器。其详细内容如下:

public ArrayList() 默认的构造器,将会以默认(16)的大小来初始化内部的数组。

public ArrayList(ICollection) 用一个ICollection对象来构造,并将该集合的元素添加到

ArrayList。

public ArrayList(int) 用指定的大小来初始化内部的数组。

2.Array与ArrayList区别

在C#中的数组也是对象,实际上就是Array类的实例,Array类的使用可以说

是使用最频繁的,只是大家在使用时都没太在意,如在创建数组int[]时实际上就创

建了一个Array类对象的实例。Array及ArrayList类之间的异同,主要有以下几点:

 Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而

ArrayList可以只是先声明。如:

int[] array = new array[3];

或 int[] array = {1,2,3};

或 ArrayList myList = new ArrayList();

这些都是合法的,而直接使用int[] array;是不行的。

 Array只能存储同构的对象,而ArrayList可以存储异构的对象。同构的对象是指类型

相同的对象,若声明为int[]的数组就只能存放整形数据,string[]只能存放字符型数据,但

声明为object[]的数组除外。

而ArrayList可以存放任何不同类型的数据(因为它里面存放的都是被装箱了的Object型对

象,实际上ArrayList内部就是使用"object[] _items;"这样一个私有字段来封装对象的)

 Array是始终是连续存放的,而ArrayList的存放不一定连续。

的大小可以动态指定,其大小可以在初始化时指定,也可以不指定,也就是说该对象

的空间可以任意增加。

Array对象的初始化必须只定指定大小,且创建后的数组大小是固定的,而ArrayList

Array不能够随意添加和删除其中的项,而ArrayList可以在任意位置插入和删除项。

3.ArrayList常用方法

在ArrayList实例对象中,包含有许多的方法,用来对元素进行操作。ArrayList

常用的方法如下:

Add方法 用于添加一个元素到当前列表的末尾。

AddRange方法 用于添加一批元素到当前列表的末尾。

Remove方法 用于删除一个元素,通过元素本身的引用来删除。

RemoveAt方法 用于删除一个元素,通过索引值来删除。

RemoveRange方法 用于删除一批元素,通过指定开始的索引和删除的数量来删除。

Insert方法 用于添加一个元素到指定位置,列表后面的元素依次往后移动。

InsertRange方法 用于从指定位置开始添加一批元素,列表后面的元素依次往后移动。

Clear方法 用于清除现有所有的元素。

Contains方法 用来查找某个对象在不在列表之中。

TrimSize方法 这个方法用于将ArrayList固定到实际元素的大小,当动态数组元素确

定不在添加的时候,可以调用这个方法来释放空余的内存。

ToArray方法 这个方法把ArrayList的元素Copy到一个新的数组中。

4.ArrayList应用

在使用ArrayList集合时,需要先引用tions 命名空间,并且所包

含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)

的集合。

而c命名空间包含定义泛型集合的接口和类,泛型集

合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性

能。

在下列代码中,通过ArrayList实例化,并分别创建al和al2集合。然后,再分

别向两个集合进行赋值等操作。

using System;

using c;

using ;

using tions;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

ArrayList al = new ArrayList();

(80);//单个添加内容

foreach (int number in new int[6] { 9, 3, 7, 2, 4, 8 })

{

(number);//集体添加方法一

}

int[] number2 = new int[2] { 11, 12 };

ge(number2);//集体添加方法二

(3);//移除值为3的内容

At(2);//移除第3个(包含0)

ArrayList al2 = new ArrayList(ge(1, 3));//新ArrayList只取旧ArrayList一

部份

ine("显示al内容:");

foreach (int i in al)//不要强制转换

{

ine(i);//显示al内容

}

ine("显示al2内容:");

for (int i = 0; i < ; i++)//数组是length

{

int number = (int)al2[i];//一定要强制转换

ine(number);//显示al2的内容

}

}

}

}

通过执行上述的代码,来了解ArrayList集合的创建,添加数据、删除数据、删

除指定元素,以及取出部分数据和类型强制转换等。其执行的结果,如图2-5所示。

图2-5 ArrayList集合应用


本文标签: 元素 集合 方法 对象 添加