Поделиться через


ArrayList Класс

Определение

IList Реализует интерфейс с помощью массива, размер которого динамически увеличивается по мере необходимости.

public ref class ArrayList : System::Collections::IList
public ref class ArrayList : ICloneable, System::Collections::IList
public class ArrayList : System.Collections.IList
public class ArrayList : ICloneable, System.Collections.IList
[System.Serializable]
public class ArrayList : ICloneable, System.Collections.IList
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ArrayList : ICloneable, System.Collections.IList
type ArrayList = class
    interface IEnumerable
    interface IList
    interface ICollection
type ArrayList = class
    interface ICollection
    interface IEnumerable
    interface IList
    interface ICloneable
type ArrayList = class
    interface IEnumerable
    interface IList
    interface ICollection
    interface ICloneable
[<System.Serializable>]
type ArrayList = class
    interface IList
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ArrayList = class
    interface IList
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class ArrayList
Implements IList
Public Class ArrayList
Implements ICloneable, IList
Наследование
ArrayList
Производный
Атрибуты
Реализации

Примеры

В следующем примере показано, как создать и инициализировать и ArrayList отобразить его значения.

using System;
using System.Collections;
public class SamplesArrayList  {

   public static void Main()  {

      // Creates and initializes a new ArrayList.
      ArrayList myAL = new ArrayList();
      myAL.Add("Hello");
      myAL.Add("World");
      myAL.Add("!");

      // Displays the properties and values of the ArrayList.
      Console.WriteLine( "myAL" );
      Console.WriteLine( "    Count:    {0}", myAL.Count );
      Console.WriteLine( "    Capacity: {0}", myAL.Capacity );
      Console.Write( "    Values:" );
      PrintValues( myAL );
   }

   public static void PrintValues( IEnumerable myList )  {
      foreach ( Object obj in myList )
         Console.Write( "   {0}", obj );
      Console.WriteLine();
   }
}


/*
This code produces output similar to the following:

myAL
    Count:    3
    Capacity: 4
    Values:   Hello   World   !

*/
Imports System.Collections

Public Class SamplesArrayList    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new ArrayList.
        Dim myAL As New ArrayList()
        myAL.Add("Hello")
        myAL.Add("World")
        myAL.Add("!")
        
        ' Displays the properties and values of the ArrayList.
        Console.WriteLine("myAL")
        Console.WriteLine("    Count:    {0}", myAL.Count)
        Console.WriteLine("    Capacity: {0}", myAL.Capacity)
        Console.Write("    Values:")
        PrintValues(myAL)
    End Sub

    Public Shared Sub PrintValues(myList As IEnumerable)
        Dim obj As [Object]
        For Each obj In  myList
            Console.Write("   {0}", obj)
        Next obj
        Console.WriteLine()
    End Sub

End Class


' This code produces output similar to the following:
' 
' myAL
'     Count:    3
'     Capacity: 4
'     Values:   Hello   World   !

Комментарии

Это важно

Мы не рекомендуем использовать ArrayList класс для новой разработки. Вместо этого рекомендуется использовать универсальный List<T> класс. Класс ArrayList предназначен для хранения разнородных коллекций объектов. Однако это не всегда обеспечивает лучшую производительность. Вместо этого рекомендуется следующее:

  • Для разнородной коллекции объектов используйте List<Object> тип (в C#) или List(Of Object) (в Visual Basic).
  • Для однородной коллекции объектов используйте List<T> класс. Дополнительные сведения о относительной производительности этих классов см. в List<T> справочном разделе. Общие сведения об использовании универсальных коллекций вместо не универсальных типов коллекций см. в GitHub.

Не гарантируется, что ArrayList будет отсортирован. Необходимо отсортировать ArrayList метод, вызвав его Sort перед выполнением операций (например BinarySearch), которые требуют ArrayList сортировки. Чтобы сохранить коллекцию, которая автоматически отсортирована по мере добавления новых элементов, можно использовать SortedSet<T> класс.

Емкость ArrayList объекта — это количество элементов, которые ArrayList могут храниться. При добавлении ArrayListэлементов в объект емкость автоматически увеличивается при необходимости при перемещении. Емкость можно уменьшить путем вызова TrimToSize или явного Capacity задания свойства.

Только .NET Framework: Для очень крупных ArrayList объектов можно увеличить максимальную емкость до 2 миллиардов элементов в 64-разрядной системе, задав enabled атрибут <gcAllowVeryLargeObjects> элемента true конфигурации в среде выполнения.

К элементам этой коллекции можно получить доступ с помощью целочисленного индекса. Индексы в этой коллекции основаны на нулях.

Коллекция ArrayList принимает null в качестве допустимого значения. Он также позволяет дублировать элементы.

Использование многомерных массивов в качестве элементов в ArrayList коллекции не поддерживается.

Конструкторы

Имя Описание
ArrayList()

Инициализирует новый экземпляр ArrayList класса, который пуст и имеет начальную емкость по умолчанию.

ArrayList(ICollection)

Инициализирует новый экземпляр класса, который содержит элементы, скопированные из указанной ArrayList коллекции, и имеет ту же начальную емкость, что и количество скопированных элементов.

ArrayList(Int32)

Инициализирует новый экземпляр класса, пустого ArrayList и имеющего указанную начальную емкость.

Свойства

Имя Описание
Capacity

Возвращает или задает количество элементов, которые ArrayList могут содержаться.

Count

Возвращает количество элементов, фактически содержащихся в элементе ArrayList.

IsFixedSize

Возвращает значение, указывающее, имеет ли ArrayList размер фиксированного размера.

IsReadOnly

Возвращает значение, указывающее, доступен ли доступ ArrayList только для чтения.

IsSynchronized

Возвращает значение, указывающее, синхронизирован ли доступ к ArrayList синхронизированному (потокобезопасно).

Item[Int32]

Возвращает или задает элемент по указанному индексу.

SyncRoot

Получает объект, который можно использовать для синхронизации доступа к объекту ArrayList.

Методы

Имя Описание
Adapter(IList)

Создает оболочку ArrayList для определенного IListобъекта.

Add(Object)

Добавляет объект в конец ArrayList.

AddRange(ICollection)

Добавляет элементы объекта ICollection в конец ArrayList.

BinarySearch(Int32, Int32, Object, IComparer)

Выполняет поиск диапазона элементов в отсортированных ArrayList элементах с помощью указанного сравнения и возвращает отсчитываемый от нуля индекс элемента.

BinarySearch(Object, IComparer)

Выполняет поиск всего отсортированного ArrayList элемента с помощью указанного средства сравнения и возвращает отсчитываемый от нуля индекс элемента.

BinarySearch(Object)

Выполняет поиск всего отсортированного ArrayList элемента с помощью средства сравнения по умолчанию и возвращает отсчитываемый от нуля индекс элемента.

Clear()

Удаляет все элементы из элемента ArrayList.

Clone()

Создает неглубокую копию ArrayList.

Contains(Object)

Определяет, находится ли элемент в элементе ArrayList.

CopyTo(Array, Int32)

Копирует все ArrayList в совместимое одномерное Arrayзначение, начиная с указанного индекса целевого массива.

CopyTo(Array)

Копирует все ArrayList в совместимый одномерный Arrayмассив, начиная с начала целевого массива.

CopyTo(Int32, Array, Int32, Int32)

Копирует диапазон элементов из совместимого одномерного Arrayмассива, начиная с ArrayList указанного индекса целевого массива.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
FixedSize(ArrayList)

Возвращает оболочку ArrayList с фиксированным размером.

FixedSize(IList)

Возвращает оболочку IList с фиксированным размером.

GetEnumerator()

Возвращает перечислитель для всего ArrayList.

GetEnumerator(Int32, Int32)

Возвращает перечислитель для диапазона элементов в элементе ArrayList.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetRange(Int32, Int32)

Возвращает подмножество ArrayList элементов в источнике ArrayList.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IndexOf(Object, Int32, Int32)

Выполняет поиск указанного Object и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов в ArrayList указанном индексе и содержит указанное число элементов.

IndexOf(Object, Int32)

Выполняет поиск указанного Object и возвращает отсчитываемый от нуля индекс первого вхождения в диапазоне элементов в ArrayList указанном индексе до последнего элемента.

IndexOf(Object)

Выполняет поиск указанного Object и возвращает отсчитываемый от нуля индекс первого вхождения в течение всего ArrayList.

Insert(Int32, Object)

Вставляет элемент в ArrayList указанный индекс.

InsertRange(Int32, ICollection)

Вставляет элементы коллекции в ArrayList указанный индекс.

LastIndexOf(Object, Int32, Int32)

Выполняет поиск указанного Object и возвращает отсчитываемый от нуля индекс последнего вхождения в диапазоне элементов, ArrayList содержащих указанное число элементов и заканчивается на указанном индексе.

LastIndexOf(Object, Int32)

Выполняет поиск указанного Object и возвращает отсчитываемый от нуля индекс последнего вхождения в диапазоне элементов, ArrayList который расширяется от первого элемента к указанному индексу.

LastIndexOf(Object)

Выполняет поиск указанного Object и возвращает отсчитываемый от нуля индекс последнего вхождения в течение всего ArrayList.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ReadOnly(ArrayList)

Возвращает оболочку только для ArrayList чтения.

ReadOnly(IList)

Возвращает оболочку только для IList чтения.

Remove(Object)

Удаляет первое вхождение определенного объекта из ArrayList.

RemoveAt(Int32)

Удаляет элемент по указанному индексу ArrayListэлемента.

RemoveRange(Int32, Int32)

Удаляет из него ArrayListдиапазон элементов.

Repeat(Object, Int32)

ArrayList Возвращает элементы, элементы которых копируют указанное значение.

Reverse()

Изменяет порядок элементов в целом ArrayList.

Reverse(Int32, Int32)

Изменяет порядок элементов в указанном диапазоне.

SetRange(Int32, ICollection)

Копирует элементы коллекции в диапазоне элементов в элементе ArrayList.

Sort()

Сортирует элементы в целом ArrayList.

Sort(IComparer)

Сортирует элементы в целом ArrayList с помощью указанного средства сравнения.

Sort(Int32, Int32, IComparer)

Сортирует элементы в диапазоне элементов с ArrayList помощью указанного средства сравнения.

Synchronized(ArrayList)

Возвращает оболочку, синхронизированную ArrayList (потокобезопасную).

Synchronized(IList)

Возвращает оболочку, синхронизированную IList (потокобезопасную).

ToArray()

Копирует элементы ArrayList нового Object массива.

ToArray(Type)

Копирует элементы ArrayList нового массива указанного типа элемента.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TrimToSize()

Задает емкость фактическому количеству элементов в объекте ArrayList.

Методы расширения

Имя Описание
AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

Cast<TResult>(IEnumerable)

Приведение элементов IEnumerable к указанному типу.

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

Применяется к

Потокобезопасность

Общедоступные статические (Shared в Visual Basic) элементы этого типа являются потокобезопасны. Никакие члены экземпляра не гарантированы как потокобезопасные.

Можно ArrayList одновременно поддерживать несколько читателей, если коллекция не изменяется. Чтобы гарантировать безопасность ArrayListпотока, все операции должны выполняться с помощью оболочки, возвращаемой методом Synchronized(IList) .

Перечисление через коллекцию по сути не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки по-прежнему могут изменять коллекцию, что приводит к возникновению исключения перечислителем. Чтобы гарантировать безопасность потоков во время перечисления, можно заблокировать коллекцию во время всего перечисления или поймать исключения, полученные из изменений, внесенных другими потоками.

См. также раздел