猿教程 Logo

C# ArrayList

ArrayList是C#中的非泛型类型的集合。 它可以包含任何数据类型的元素。 它类似于数组,除了它在您添加项目时自动增长。 与数组不同,您不需要指定ArrayList的大小。

ArrayList实例:

ArrayList myArryList = new ArrayList();

ArrayList的主要属性和方法

属性名称描述
Capacity获取或设置ArrayList可以包含的元素数。
Count获取ArrayList中实际包含的元素数。
IsFixedSize获取一个值,该值指示ArrayList是否具有固定大小。
IsReadOnly获取一个值,该值指示ArrayList是否为只读。
Item取或设置指定索引处的元素。
方法名称
描述
Add()/ AddRange()

Add()方法在ArrayList的末尾添加单个元素。

AddRange()方法将指定集合中的所有元素添加到ArrayList中。

Insert()/ InsertRange()

Insert()方法在ArrayList中的指定索引处插入单个元素。

InsertRange()方法从ArrayList中的指定索引开始插入指定集合的所有元素。

Remove()/ RemoveRange()

Remove()方法从ArrayList中删除指定的元素。

RemoveRange()方法从ArrayList中删除一系列元素。

RemoveAt()从ArrayList中删除指定索引处的元素。
Sort()排序ArrayList的所有元素。
Reverse()颠倒整个ArrayList中元素的顺序。
Contains检查指定的元素是否存在于ArrayList中。返回true如果存在否则为false。
Clear 删除ArrayList中的所有元素。
CopyTo 将所有元素或元素范围复制到可复制的Array。
GetRange 从ArrayList的指定索引返回指定数量的元素。
IndexOf 搜索指定的元素,并返回基于零的索引(如果找到)。如果找不到元素,则返回-1。
ToArray 从ArrayList返回可计算的数组。

向ArrayList添加元素

使用Add()方法添加单个元素或AddRange()方法将其他集合中的多个元素添加到ArrayList中。 这里,元素表示图元或非图元类型的文字值。

Add()定义:int Add(Object value)

AddRange()定义:void AddRange(ICollection c)

添加元素实例:

ArrayList arryList1 = new ArrayList();
arryList1.Add(1);
arryList1.Add("Two");
arryList1.Add(3);
arryList1.Add(4.5);
ArrayList arryList2 = new ArrayList();
arryList2.Add(100);
arryList2.Add(200);
//adding entire arryList2 into arryList1
arryList1.AddRange(arryList2);

使用对象初始化语法初始化时,也可以添加项目。

ArrayList arrayList = new ArrayList() { 100, "Two", 12.5, 200 };

从ArrayList获取元素

可以使用索引器访问ArrayList元素,方式与数组相同。 但是,您需要将其转换为适当的类型或在访问它时使用隐式类型var关键字。

ArrayList myArryList = new ArrayList();
myArryList.Add(1);
myArryList.Add("Two");
myArryList.Add(3);
myArryList.Add(4.5f);
//Access individual item using indexer
int firstElement = (int) myArryList[0]; //returns 1
string secondElement = (string) myArryList[1]; //returns "Two"
int thirdElement = (int) myArryList[2]; //returns 3
float fourthElement = (float) myArryList[3]; //returns 4.5
//use var keyword
var firstElement = myArryList[0]; //returns 1

使用foreach或for循环来迭代ArrayList。

示例:迭代ArrayList

ArrayList myArryList = new ArrayList();
myArryList.Add(1);
myArryList.Add("Two");
myArryList.Add(3);
myArryList.Add(4.5);
foreach (var val in myArryList)
        Console.WriteLine(val); 
            
//Or
for(int i = 0 ; i< myArryList.Count; i++)
    Console.WriteLine(myArryList[i]);

运行结果:

1
Two
3
4.5

注意:ArrayList可以包含多个空值和重复值。


向ArrayList插入元素

使用Insert()方法在指定的索引处插入单个项目。

Insert()signature:void Insert(int index,Object value)

使用Insert()方法在指定的索引处插入单个项目。

Insert()声明:void Insert(int index,Object value)

ArrayList myArryList = new ArrayList();
myArryList.Add(1);
myArryList.Add("Two");
myArryList.Add(3);
myArryList.Add(4.5);
myArryList.Insert(1, "Second Item");
myArryList.Insert(2, 100);
foreach (var val in myArryList)
Console.WriteLine(val);

运行结果:

1
Second Item
100
Two
3
4.5

使用InsertRange()方法将来自另一个集合的所有值插入指定索引处的ArrayList中。

InsertRange()方法签名:Void InsertRange(int index,ICollection c)

ArrayList arryList1 = new ArrayList();
arryList1.Add(100);
arryList1.Add(200);
ArrayList arryList2 = new ArrayList();
arryList2.Add(10);
arryList2.Add(20);
arryList2.Add(30);
arryList2.InsertRange(2, arryList1);
foreach(var item in arryList2)
Console.WriteLine(item);

运行结果:

10
20
100
200
30

从ArrayList删除元素

使用Remove()方法从ArrayList中删除指定的元素。

Remove()签名:void Remove(Object obj)

ArrayList arryList1 = new ArrayList();
arryList1.Add(100);
arryList1.Add(200);
arryList1.Add(300);
arryList1.Remove(100); //Removes 1 from ArrayList
foreach (var item in arryList1)
Console.WriteLine(item);

运行结果:

200
300

使用RemoveAt()方法从指定的索引位置中删除一个元素。

RemoveAt()方法签名:void RemoveAt(int index)

ArrayList arryList1 = new ArrayList();
arryList1.Add(100);
arryList1.Add(200);
arryList1.Add(300);
arryList1.RemoveAt(1); //Removes the first element from an ArrayList
foreach (var item in arryList1)
Console.WriteLine(item);

运行结果:

100
300

使用RemoveRange()方法从指定的索引中删除多个元素,直到ArrayList中指定数量的元素。

RemoveRange()方法签名:void RemoveRange(int index,int count)

ArrayList arryList1 = new ArrayList();
arryList1.Add(100);
arryList1.Add(200);
arryList1.Add(300);
arryList1.RemoveRange(0,2);//Removes two elements starting from 1st item (0 index)
foreach(var item in arryList1)
Console.WriteLine(item);

运行结果:

300

ArrayList排序

ArrayList包含Sort()和Reverse()方法。 Sort()方法按升序排列元素。 然而,所有的元素应该具有相同的数据类型,以便它可以与默认比较器相比较,否则会抛出运行时异常。

Reverse()方法以相反的顺序排列元素。 最后一个元素在零索引等。

ArrayList arryList1 = new ArrayList();
arryList1.Add(300);
arryList1.Add(200);
arryList1.Add(100);
arryList1.Add(500);
arryList1.Add(400);
Console.WriteLine("Original Order:");
foreach(var item in arryList1)
Console.WriteLine(item);
arryList1.Reverse();
Console.WriteLine("Reverse Order:");
foreach(var item in arryList1)
Console.WriteLine(item);
arryList1.Sort();
Console.WriteLine("Ascending Order:");
foreach(var item in arryList1)
Console.WriteLine(item);

运行结果:

Original Order:
300
200
100
500
400
Reverse Order:
400
500
100
200
300
Ascending Order:
100
200
300
400
500

检查元素是否存在

ArrayList.Contains()方法检查指定的元素是否存在于ArrayList中。 返回true如果存在否则为false。

ArrayList myArryList = new ArrayList();
myArryList.Add(100);
myArryList.Add("Hello World");
myArryList.Add(300);
Console.WriteLine(myArryList.Contains(100));

运行结果:

True

更多资料

Array和ArrayList之间的区别

ArrayList的方法和属性

要点
  1. ArrayList可以存储任何数据类型的项(元素)。

  2. 在添加元素时,ArrayList会自动调整大小。

  3. 在使用ArrayList值之前,必须将它转换为适当的数据类型。

  4. ArrayList可以包含多个null和dulplicate项。

  5. ArrayList可以使用foreach或for循环或索引器访问。

  6. 使用Add(),AddRange(),Remove(),RemoveRange(),Insert(),InsertRange(),Sort(),Reverse()


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CSharp/Csharp-arraylist.html