ArrayList

创建一个ArrayList

可以使用ArrayList类提供的三个构造器之一实例化一个ArrayList对象。

1、最简单的形式是无参数构造器:

ArrayList  courseTaken= new ArrayList();

该构造器创建一个内容的、缺省容量为16个元素的ArrayList。当元素数量到达当前上限时,ArrayList的容量自动翻倍。

2、第二种形式是接受一个整数参数,该参数代表ArrayList的初始容量;如:

ArrayList students = new ArrayList(400);

当我们确知ArrayList中将会放大量引用时,应用这种形式的构造器。把ArrayList初始容量定义为大于缺省的16个元素,减少了重新设定容量的次数,从而提升了性能。

3、第三种构造器接受任何合适的C#群集对象——即,所用实现了ICollection接口的类的对象,包括System.Collecions类的对象和System.Array类的对象——作为参数,然后复制传入群集的内容,组装为新构造函数的ArrayList对象。

//创建一个Course对象数组:

Course[] courses = new Course[3];

courses[1] = new Course("Math 101");

courses[2] = new Course("Physics 250");

courses[3] = new Course("Management 283");

//其它细节从略 

//....在后面的程序中,用它来初始化一个ArrayList。

ArrayList courseTaken = new ArrayList(course);

在上面的代码片断中,我们初始化了一个ArrayList,它容纳一个Course数组。注意两个群集都指向相同的对象。唯一的变化就是从一种群集转化为另一种群集,然后可以使用该群集的方法。

 for (int i=0;i<studentList.Count;i++)
 {
         Console.WriteLine("课程名称为:{0}:",((Course)courseTaken [i]).Name);
 }

//输出结果

课程名称为:Math 101

课程名称为:Physics 250

课程名称为:Management 283


ArrayList属性

ArrayList声明了多个属性来返回自身信息。

Capacity 属性,用来得到ArrayList的容量;(如果试图在代码中将它的长度减小到不能容纳已有元素时,一个ArgumentOutOfRangeException异常会被抛出。)

Count 属性,ArrayList中当前的元素数量;

为得到一个ArrayList中的某个元素,ArrayList类定义了一个特殊的索引属性,允许我们像数组一样访问里面的元素——在方括号中输入要索引的整数值。索引器返回一个普通的对象引用,被索引的元素被转换为原本的类型。

 下面的例子演示了这些属性:

Course c1 = new Course("Math 101");

Course c2 = new Course("Physics 250");

Course c3 = new Course("Management 283")

 //正确地使用ArrayList索引器(注意,看起来在访问一个数组!)

courseTaken[0] = c1;

courseTaken[2] =c2;

courseTaken[3]=c3;

//使用capacity 和Count属性

Console.WriteLine("Capacity = " + courseTaken.Capacity);

Console.WriteLine("no. of elements =" + courseTaken.Count);

//用索引器取出ArrayList中的元素

for(int i=0;i<courseTaken.Count;i++)

{

    //用索引器取出ArrayList中的元素。

    Course c =(Course) courseTaken[i];

    //我们现在c上调用course的方法

    Console.WriteLine(c.Name);

}

这个例子说明,在ArrayList中加入不同类型元素,可能是很危险的。ArrayList中的元素被遍历并转换为Course对象。然后,每个Course对象中Name属性被调用。如果ArrayList中每个元素都是Course对象(或者从Course类派生的类型对象),就能工作正常。但是如果有不同类型的元素存在,就会抛出一个InvalidCastException异常。

 

ArrayList类的方法

常用的ArrayList方法如下所示:

1、public virtual int Add(object value) :在ArrayList末尾添加一个对象引用,若容量不足则自动扩张。前面的Virtual关键字表示允许派生类覆载这个方法。返回值是一个int类型,表示传入参数在ArrayList中的位置。

2、public void Add(ICollection c ): 在ArrayList末尾添加特定群集的内容;

3、public void SetRange(int startIndex,ICollecion c) :从指定起始处用另一ICollecion对象取代ArrayList原有元素。如果c中的元素大于ArrayList要取代的部分,ArrayList将会自动扩展。

4、public int IndexOf(object obj): 寻找一个指定的对象引用,如果找到,则返回第一个匹配位置(从0开始计数)。如果没有找到,返回-1;

5、public bool Contains(object obj):寻找一个指定对象引用,如果找到返回true,否则返回false;

6、public void RemoveAt(int index): 将指定位置的元素剔除,并且“填上”空洞。Count 属性将会递减,而Capacity则保持不变。如果指定的索引大于Count的值或者小于零,将抛出一个ArgumentOutOfRangeException异常。

7、public void Remove(object obj): 在ArrayList中搜寻指定的对象引用,如果找到,则把第一个找到的对象的引用从ArrayList中除移。Count属性将会减1,而Capacity则会保持不变。如果希望删掉所有的obj,在一个while循环中组合使用Contains和Remove方法:

while(arraylist.Contains(x)){

     arraylist.Remove(x);

}

8、public void Sort() :对ArrayList中的元素排序。默认按照字母排序对string元素排序,按照从小到大顺序对数值型元素排序;

9、public void Clear() :清空整个ArrayList。count属性被设为0,capacity不变;

10、public object[] ToArray(): 创建一个Object数组,并将ArrayList中的元素拷贝进数组。

ArrayList类还有很多方法。如果需要完整的ArrayList方法列表,可以查阅MSDN.

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值