📜  C#中的ArrayList

📅  最后修改于: 2021-05-29 22:57:06             🧑  作者: Mango

ArrayList是C#语言的强大功能。这是在System.Collections命名空间中定义的集合的非通用类型。它用于创建动态数组,这意味着数组的大小会根据您的程序要求自动增加或减少,无需指定ArrayList的大小。换句话说,ArrayList表示可以单独索引的对象的有序集合。在ArrayList中,可以存储相同类型和不同类型的元素。它属于非通用集合。下图说明了ArrayList类的层次结构:

重要事项:

  • ArrayList类实现IEnumerableICollectionIList和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

笔记:

  • 您也可以使用IEnumerableICollectionIList接口创建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