ArrayList是C#语言的强大功能。这是在System.Collections命名空间中定义的集合的非通用类型。它用于创建动态数组,这意味着数组的大小会根据您的程序要求自动增加或减少,无需指定ArrayList的大小。换句话说,ArrayList表示可以单独索引的对象的有序集合。在ArrayList中,可以存储相同类型和不同类型的元素。它属于非通用集合。下图说明了ArrayList类的层次结构:
重要事项:
- ArrayList类实现IEnumerable , ICollection , IList和ICloneable接口。
- ArrayList类继承了Object类。
- ArrayList在System.Collections命名空间下定义。因此,在程序中使用Arraylist时,必须添加System.Collections命名空间。
- 您不能使用ArrayList实现多维数组。
- ArrayList的容量是ArrayList可以容纳的元素数。
- 您可以在ArrayList中使用重复的元素。
- 您可以对ArrayList中存在的元素进行搜索和排序。
- Arraylist可以接受null作为有效值。
如何创建ArrayList?
ArrayList类具有三个用于创建ArrayList的构造函数。
- ArrayList():此构造函数用于创建ArrayList类的实例,该实例为空且没有初始容量。
- ArrayList(Int32):此构造函数用于创建ArrayList类的实例,该实例为空并具有指定的初始容量。
- ArrayList(ICollection):此构造函数用于创建一个数组列表,该列表用指定集合中的元素初始化,并且具有与从集合中复制的相同的初始容量。
让我们看看如何使用ArrayList()构造函数创建一个ArrayList:
- 步骤1:借助using关键字,在程序中包含System.Collections命名空间。
句法:
using System.Collections;
- 步骤2:使用ArrayList类创建一个ArrayList,如下所示:
ArrayList list_name = new ArrayList();
- 步骤3:如果要在ArrayList中添加元素,请使用Add()方法在ArrayList中添加元素。如下例所示。
- 步骤4:使用foreach循环,for循环或索引器访问ArrayList的元素。如下例所示,我们使用foreach循环访问ArrayList。
示例:下面的程序演示如何创建ArrayList,将元素添加到ArrayList以及如何访问ArrayList的元素。
// C# program to demonstrtate the ArrayList
using System;
using System.Collections;
class GFG {
// Main Method
static public void Main()
{
// Creating ArrayList
ArrayList My_array = new ArrayList();
// Adding elements in the
// My_array ArrayList
// This ArrayList contains elements
// of different types
My_array.Add(12.56);
My_array.Add("GeeksforGeeks");
My_array.Add(null);
My_array.Add('G');
My_array.Add(1234);
// Accessing the elements
// of My_array ArrayList
// Using foreach loop
foreach(var elements in My_array)
{
Console.WriteLine(elements);
}
}
}
输出:
12.56
GeeksforGeeks
G
1234
如何找到ArrayList元素的容量和计数?
为了找到这个,我们可以使用ArrayList类的Count和Capacity属性,如下所示:
例子:
// C# program to find the number of
// elements and capacity of ArrayList
using System;
using System.Collections;
class GFG {
// Driver code
public static void Main() {
// Creating an ArrayList
ArrayList myList = new ArrayList();
// Adding elements to ArrayList
myList.Add(1);
myList.Add(2);
myList.Add(3);
myList.Add(4);
myList.Add(5);
// Displaying count of elements of ArrayList
Console.WriteLine("Number of elements: " + myList.Count);
// Displaying Current capacity of ArrayList
Console.WriteLine("Current capacity: " + myList.Capacity);
}
}
输出:
Number of elements: 5
Current capacity: 8
如何从ArrayList中删除元素?
在ArrayList中,允许您从ArrayList中删除元素。 ArrayList提供了四种删除元素的方法,这些方法是:
- Remove:此方法用于从ArrayList中删除第一次出现的特定对象。
- RemoveAt:此方法用于删除ArrayList指定索引处的元素。
- RemoveRange:此方法用于从ArrayList中删除一系列元素。
- 清除:此方法用于从ArrayList中删除所有元素。
例子:
// C# program to illustrate how
// to remove elements from the
// ArrayList
using System;
using System.Collections;
class GFG {
static public void Main()
{
// Creating ArrayList
ArrayList My_array = new ArrayList();
// Adding elements in the
// My_array ArrayList
// This ArrayList contains elements
// of the same types
My_array.Add('G');
My_array.Add('E');
My_array.Add('E');
My_array.Add('K');
My_array.Add('S');
My_array.Add('F');
My_array.Add('O');
My_array.Add('R');
My_array.Add('G');
My_array.Add('E');
My_array.Add('E');
My_array.Add('K');
My_array.Add('S');
Console.WriteLine("Initial number of elements : "
+ My_array.Count);
// Remove the 'G' element
// from the ArrayList
// Using Remove() method
My_array.Remove('G');
Console.WriteLine("After Remove() method the "+
"number of elements: " + My_array.Count);
// Remove the element present at index 8
// Using RemoveAt() method
My_array.RemoveAt(8);
Console.WriteLine("After RemoveAt() method the "+
"number of elements: " + My_array.Count);
// Remove 3 elements starting from index 1
// using RemoveRange() method
My_array.RemoveRange(1, 3);
Console.WriteLine("After RemoveRange() method the"+
" number of elements: " + My_array.Count);
// Remove the all element
// present in ArrayList
// Using Clear() method
My_array.Clear();
Console.WriteLine("After Clear() method the "+
"number of elements: " + My_array.Count);
}
}
输出:
Initial number of elements : 13
After Remove() method the number of elements: 12
After RemoveAt() method the number of elements: 11
After RemoveRange() method the number of elements: 8
After Clear() method the number of elements: 0
如何对ArrayList的元素进行排序?
在ArrayList中,可以使用Sort()方法对给定ArrayList中存在的元素执行排序。此方法使用QuickSort算法对ArrayList进行排序,并且元素以升序排列。下例显示了此方法的使用。
例子:
// C# program to illustrate
// sorting of ArrayList
using System;
using System.Collections;
public class GFG {
static public void Main()
{
// Creating ArrayList
ArrayList My_array = new ArrayList();
// Adding elements in the
// My_array ArrayList
// This ArrayList contains
// elements of the same types
My_array.Add(1);
My_array.Add(6);
My_array.Add(40);
My_array.Add(10);
My_array.Add(5);
My_array.Add(3);
My_array.Add(2);
My_array.Add(4);
// ArrayList before sorting
Console.WriteLine("ArrayList before using Sort() method:");
foreach(var elements in My_array)
{
Console.WriteLine(elements);
}
// Sort the elements of the ArrayList
// Using sort() method
My_array.Sort();
// ArrayList after sorting
Console.WriteLine("ArrayList after using Sort() method:");
foreach(var elements in My_array)
{
Console.WriteLine(elements);
}
}
}
输出:
ArrayList before using Sort() method:
1
6
40
10
5
3
2
4
ArrayList after using Sort() method:
1
2
3
4
5
6
10
40
笔记:
- 您也可以使用IEnumerable , ICollection和IList接口创建ArrayList类的对象,但是ArrayList类的某些方法不适用于它们,因为它们不是这些接口的成员。
例子:
// using IList Interface IList arrlist1 = new ArrayList(); // using ICollection Interface ICollection arrlist2 = new ArrayList(); // using IEnumerable Interface IEnumerable arrlist3 = new ArrayList();
但是在这里,您不能应用Reverse(),AddRange()等方法。
- 要了解有关ArrayList类的构造函数,属性和方法的更多信息,请参考ArrayList类。
- 要了解Array和ArrayList之间的区别,请参阅C#中的Array vs ArrayList 。