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) | |
| 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() | |
| 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) .
Перечисление через коллекцию по сути не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки по-прежнему могут изменять коллекцию, что приводит к возникновению исключения перечислителем. Чтобы гарантировать безопасность потоков во время перечисления, можно заблокировать коллекцию во время всего перечисления или поймать исключения, полученные из изменений, внесенных другими потоками.