C# 集合系列 =>ArrayList类:动态数组

简介:

动态数组(ArrayList)代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。

创建 ArrayList 类的对象需要使用该类的构造方法:

构造方法作用
ArrayList()创建 ArrayList 的实例,集合的容量是默认初始容量
ArrayList(ICollection c)创建 ArrayList 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数相同
ArrayList(int capacity)创建 ArrayList 的实例,并设置其初始容量

下面分别使用 ArrayList 类的构造器创建 ArrayList 实例,代码如下:

ArrayList listl=new ArrayList();
ArrayList list2=new ArrayList(listl);
ArrayList list3=new ArrayList(20);

ArrayList 类的方法和属性: 

1,ArrayList 类的属性

属性描述
Capacity获取或设置 ArrayList 可以包含的元素个数。
Count获取 ArrayList 中实际包含的元素个数。
IsFixedSize获取一个值,表示 ArrayList 是否具有固定大小。
IsReadOnly获取一个值,表示 ArrayList 是否只读。
IsSynchronized获取一个值,表示访问 ArrayList 是否同步(线程安全)。
Item[Int32]获取或设置指定索引处的元素。
SyncRoot获取一个对象用于同步访问 ArrayList。

2,优点

1、支持自动改变大小的功能
2、可以灵活的插入元素
3、可以灵活的删除元素 

3,缺点

在arraylist中,我们可以存放不同类型的数据,可以是整型、字符串等,因为ArrayList会把所有插入其中的数据都当作为object类型来处理。这样,在我们使用ArrayList中的数据来处理问题的时候,很可能会报类型不匹配的错误,也就是说ArrayList不是类型安全的。既使我们保证在插入数据的时候都很小心,都有插入了同一类型的数据,但在使用的时候,我们也需要将它们转化为对应的原类型来处理。这就存在了装箱与拆箱的操作,会带来很大的性能损耗。

4,ArrayList类常用的方法

方法名  描述
Add( object value ) 在 ArrayList 的末尾添加一个对象。
AddRange( ICollection c )在 ArrayList 的末尾添加 ICollection 的元素。
Clear()从 ArrayList 中移除所有的元素。
Contains( object item )判断某个元素是否在 ArrayList 中。
GetRange( int index, int count )返回一个 ArrayList,表示源 ArrayList 中元素的子集。
IndexOf(object)返回某个值在 ArrayList 中第一次出现的索引,索引从零开始。
Insert( int index, object value )在 ArrayList 的指定索引处,插入一个元素。
InsertRange( int index, ICollection c )在 ArrayList 的指定索引处,插入某个集合的元素。
Remove( object obj ) 从 ArrayList 中移除第一次出现的指定对象。
RemoveAt( int index ) 移除 ArrayList 的指定索引处的元素。
RemoveRange( int index, int count )从 ArrayList 中移除某个范围的元素。
Reverse()逆转 ArrayList 中元素的顺序。
SetRange( int index, ICollection c )复制某个集合的元素到 ArrayList 中某个范围的元素上。
Sort()对 ArrayList 中的元素进行排序。
TrimToSize()设置容量为 ArrayList 中元素的实际个数。

 实例:

using System;
using System.Collections;

namespace CollectionApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList al = new ArrayList();

            Console.WriteLine("Adding some numbers:");
            al.Add(45);
            al.Add(78);
            al.Add(33);
            al.Add(56);
            al.Add(12);
            al.Add(23);
            al.Add(9);
           
            Console.WriteLine("Capacity: {0} ", al.Capacity);
            Console.WriteLine("Count: {0}", al.Count);
                     
            Console.Write("Content: ");
            foreach (int i in al)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();
            Console.Write("Sorted Content: ");
            al.Sort();
            foreach (int i in al)
            {
                Console.Write(i + " ");
            }
            Console.WriteLine();
            Console.ReadKey();
        }
    }
}

执行上面的代码,效果如下:

Adding some numbers:
Capacity: 8
Count: 7
Content: 45 78 33 56 12 23 9
Content: 9 12 23 33 45 56 78 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值