C# - 数组列表(ArrayList)
本文关键字:ArrayList 列表 数组 | 更新日期: 2023-09-12 17:39:21
在 C# 中,ArrayList
是大小动态增加的对象的非泛型集合。它与Array相同,只是它的大小是动态增加的。
ArrayList
可用于添加未知数据,其中您不知道数据的类型和大小。
创建数组列表
包含在 System.Collections
命名空间中的ArrayList
类。使用 new
关键字创建ArrayList
的对象。
Example: Create an ArrayList
using System.Collections;
ArrayList arlist = new ArrayList();
// or
var arlist = new ArrayList(); // recommended
在 ArrayList中添加元素
使用 Add()
方法或 object 初始值设定项语法在ArrayList
中添加元素。
一个ArrayList
可以包含多个null
和重复值。
Example: Adding Elements in ArrayList
// adding elements using ArrayList.Add() method
var arlist1 = new ArrayList();
arlist1.Add(1);
arlist1.Add("Bill");
arlist1.Add(" ");
arlist1.Add(true);
arlist1.Add(4.5);
arlist1.Add(null);
// adding elements using object initializer syntax
var arlist2 = new ArrayList()
{
2, "Steve", " ", true, 4.5, null
};
使用 AddRange(ICollection c)
方法添加
Array, HashTable, SortedList, ArrayList
, BitArray
, Queue, 和 Stack in the ArrayList
.Example: Adding Entire Array/ArrayList into ArrayList
var arlist1 = new ArrayList();
var arlist2 = new ArrayList()
{
1, "Bill", " ", true, 4.5, null
};
int[] arr = { 100, 200, 300, 400 };
Queue myQ = new Queue();
myQ.Enqueue("Hello");
myQ.Enqueue("World!");
arlist1.AddRange(arlist2); //adding arraylist in arraylist
arlist1.AddRange(arr); //adding array in arraylist
arlist1.AddRange(myQ); //adding Queue in arraylist
Access an ArrayList
ArrayList
类实现IList
接口。因此,可以使用索引器以与数组相同的方式访问元素。索引从零开始,每个后续元素增加 1。
需要显式转换为适当的类型,或使用var 变量。
Example: Accessing Elements of ArrayList
var arlist = new ArrayList()
{
1,
"Bill",
300,
4.5f
};
//Access individual item using indexer
int firstElement = (int) arlist[0]; //returns 1
string secondElement = (string) arlist[1]; //returns "Bill"
//int secondElement = (int) arlist[1]; //Error: cannot cover string to int
//using var keyword without explicit casting
var firstElement = arlist[0]; //returns 1
var secondElement = arlist[1]; //returns "Bill"
//var fifthElement = arlist[5]; //Error: Index out of range
//update elements
arlist[0] = "Steve";
arlist[1] = 100;
//arlist[5] = 500; //Error: Index out of range
Iterate an ArrayList
ArrayList
实现ICollection 接口,该接口支持集合类型的迭代。因此,使用 foreach
和 for
循环来迭代ArrayList
。ArrayList
的 Count
属性返回ArrayList
中的元素总数。
Example: Iterate ArrayList
ArrayList arlist = new ArrayList()
{
1,
"Bill",
300,
4.5F
};
foreach (var item in arlist)
Console.Write(item + ", "); //output: 1, Bill, 300, 4.5,
for(int i = 0 ; i < arlist.Count; i++)
Console.Write(arlist[i] + ", "); //output: 1, Bill, 300, 4.5,
Insert elements in ArrayList
使用 Insert()
方法将指定索引处的元素插入到ArrayList
中。
签名:void Insert(int index, Object value)
Example: Insert Element in ArrayList
ArrayList arlist = new ArrayList()
{
1,
"Bill",
300,
4.5f
};
arlist.Insert(1, "Second Item");
foreach (var val in arlist)
Console.WriteLine(val);
使用 InsertRange()
方法在指定索引处的ArrayList
中插入集合。
签名:Void InsertRange(int index, ICollection c)
Example: Insert Collection in ArrayList
ArrayList arlist1 = new ArrayList()
{
100, 200, 600
};
ArrayList arlist2 = new ArrayList()
{
300, 400, 500
};
arlist1.InsertRange(2, arlist2);
foreach(var item in arlist1)
Console.Write(item + ", "); //output: 100, 200, 300, 400, 500, 600,
Remove Elements from ArrayList
使用 Remove()
、 RemoveAt()
或 RemoveRange
方法从ArrayList
中删除元素。
Example: Remove Elements from ArrayList
ArrayList arList = new ArrayList()
{
1,
null,
"Bill",
300,
" ",
4.5f,
300,
};
arList.Remove(null); //Removes first occurance of null
arList.RemoveAt(4); //Removes element at index 4
arList.RemoveRange(0, 2);//Removes two elements starting from 1st item (0 index)
检查 ArrayList 中的元素
使用 Contains()
方法确定指定的元素是否存在于ArrayList
中。如果存在,则返回 true,否则返回 false。
Example: Check for Elements
ArrayList arList = new ArrayList()
{
1,
"Bill",
300,
4.5f,
300
};
Console.WriteLine(arList.Contains(300)); // true
Console.WriteLine(arList.Contains("Bill")); // true
Console.WriteLine(arList.Contains(10)); // false
Console.WriteLine(arList.Contains("Steve")); // false
注意:由于性能问题,不建议使用 ArrayList
类。相反,请使用List<object>
来存储异类对象。要存储相同数据类型的数据,请使用 Generic List<T>。
ArrayList class
下图说明了ArrayList
类。
C# ArrayList
ArrayList Properties
Properties | Description |
---|---|
Capacity | 获取或设置 ArrayList 可以包含的元素数。 |
Count | 获取数组列表中实际包含的元素数。 |
IsFixedSize | 获取一个值,该值指示 ArrayList 是否具有固定大小。 |
IsReadOnly | 获取一个值,该值指示 ArrayList 是否为只读。 |
Item | 获取或设置指定索引处的元素。 |
ArrayList Methods
Methods | Description |
---|---|
Add()/AddRange() | Add() 方法在 ArrayList 的末尾添加单个元素。 AddRange() 方法将指定集合中的所有元素添加到 ArrayList 中。 |
Insert()/InsertRange | Insert() 方法在 ArrayList 中的指定索引处插入单个元素。 InsertRange() 方法从 ArrayList 中的指定索引开始插入指定集合的所有元素。 |
Remove()/RemoveRange | Remove() 方法从 ArrayList 中删除指定的元素。 RemoveRange() 方法从 ArrayList 中删除一系列元素。 |
RemoveAt() | 从 ArrayList 中删除指定索引处的元素。 |
sort() | 对数组列表的整个元素进行排序。 |
Reverse() | 反转整个 ArrayList 中元素的顺序。 |
contains | 检查指定的元素是否存在于数组列表中。 如果存在,则返回 true,否则返回 false。 |
Clear | 删除数组列表中的所有元素。 |
CopyTo | 将所有元素或元素范围复制到可兼容的数组中。 |
GetRange | 从 ArrayList 的指定索引返回指定数量的元素。 |
IndexOf | Search 指定元素,如果找到,则返回从零开始的索引。如果未找到元素,则返回 -1。 |
ToArray | 从 ArrayList 返回可兼容数组。 |