ArrayList Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Реализация интерфейса с изменяемым размером массива List
.
[Android.Runtime.Register("java/util/ArrayList", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public class ArrayList : Java.Util.AbstractList, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable, Java.Util.IRandomAccess
[<Android.Runtime.Register("java/util/ArrayList", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
type ArrayList = class
inherit AbstractList
interface ISerializable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface ICloneable
interface IList
interface ICollection
interface IIterable
interface IRandomAccess
- Наследование
- Атрибуты
- Реализации
Комментарии
Реализация интерфейса с изменяемым размером массива List
. Реализует все необязательные операции со списками и разрешает все элементы, включая null
. Помимо реализации List
интерфейса, этот класс предоставляет методы для управления размером массива, который используется для внутреннего хранения списка. (Этот класс примерно эквивалентен Vector
, за исключением того, что он несинхронизирован.)
Операции size
, isEmpty
, get
, set
, iterator
и listIterator
выполняются в течение постоянного времени. Операция add
выполняется в амортизированном константном времени, то есть для добавления n элементов требуется время O(n). Все остальные операции выполняются в линейное время (грубо говоря). Коэффициент константы низкий по сравнению с коэффициентом LinkedList
для реализации.
Каждый ArrayList
экземпляр имеет емкость. Емкость — это размер массива, используемого для хранения элементов в списке. Он всегда по крайней мере равен размеру списка. По мере добавления элементов в ArrayList его емкость увеличивается автоматически. Сведения о политике роста не указываются помимо того, что добавление элемента имеет постоянные амортизированные временные затраты.
Приложение может увеличить емкость экземпляра ArrayList
перед добавлением большого количества элементов с помощью ensureCapacity
операции . Это может уменьшить объем добавочного перераспределения.
<strong>Обратите внимание, что эта реализация не синхронизирована.</strong> Если несколько потоков обращаются к экземпляру ArrayList
одновременно и по крайней мере один из потоков изменяет список структурно, он должен быть синхронизирован извне. (Структурное изменение — это любая операция, которая добавляет или удаляет один или несколько элементов или явно изменяет размер резервного массива. Простое задание значения элемента не является структурным изменением.) Обычно это выполняется путем синхронизации с каким-то объектом, который естественным образом инкапсулирует список.
Если такого объекта не существует, список должен быть "упакован" с помощью Collections#synchronizedList Collections.synchronizedList
метода . Это лучше всего делать во время создания, чтобы предотвратить случайный несинхронизированный доступ к списку:
List list = Collections.synchronizedList(new ArrayList(...));
<p id="fail-fast"> Итераторы, возвращаемые методами и #listIterator(int) listIterator
этого класса#iterator() iterator
, являются <em>fail-fast</em>: если список структурно изменяется в любое время после создания итератора, любым способом, кроме собственных методов или ListIterator#add(Object) add
итератораListIterator#remove() remove
, итератор вызовет ConcurrentModificationException
исключение . Таким образом, перед лицом параллельного изменения итератор быстро и чисто завершает работу, а не рискует произвольным, недетерминированным поведением в неопределенное время в будущем.
Обратите внимание, что быстрое поведение итератора не может быть гарантировано, так как в целом невозможно сделать какие-либо жесткие гарантии при наличии несинхронизированных одновременных изменений. Отказоустойчивые итераторы создаются ConcurrentModificationException
на основе наилучших усилий. Поэтому было бы неправильно писать программу, которая зависит от этого исключения из-за его правильности: быстрое поведение итераторов должно использоваться только для обнаружения ошибок.
Этот класс является членом Платформы коллекций Java.
Добавлено в версии 1.2.
Документация по Java для java.util.ArrayList
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Конструкторы
ArrayList() |
Создает пустой список с начальной емкостью в десять. |
ArrayList(ICollection) |
Создает список, содержащий элементы указанной коллекции, в том порядке, в котором они возвращаются итератором коллекции. |
ArrayList(Int32) |
Создает пустой список с указанной начальной емкостью. |
ArrayList(IntPtr, JniHandleOwnership) |
Конструктор, используемый при создании управляемых представлений объектов JNI; вызывается средой выполнения. |
Свойства
Class |
Возвращает класс среды выполнения данного объекта |
Handle |
Дескриптор базового экземпляра Android. (Унаследовано от Object) |
IsEmpty |
Добавляемое (Унаследовано от AbstractCollection) |
JniIdentityHashCode |
Реализация интерфейса с изменяемым размером массива |
JniPeerMembers |
Реализация интерфейса с изменяемым размером массива |
ModCount |
Количество структурных изменений этого списка. (Унаследовано от AbstractList) |
PeerReference |
Реализация интерфейса с изменяемым размером массива |
ThresholdClass |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
ThresholdType |
Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода. |
Методы
Add(Int32, Object) |
Добавляемое (Унаследовано от AbstractList) |
Add(Object) |
Добавляемое (Унаследовано от AbstractCollection) |
AddAll(ICollection) |
Добавляемое (Унаследовано от AbstractCollection) |
AddAll(Int32, ICollection) |
Добавляемое (Унаследовано от AbstractList) |
Clear() |
Добавляемое (Унаследовано от AbstractCollection) |
Clone() |
Возвращает неполную копию этого |
Contains(Object) |
Добавляемое (Унаследовано от AbstractCollection) |
ContainsAll(ICollection) |
Добавляемое (Унаследовано от AbstractCollection) |
Dispose() |
Реализация интерфейса с изменяемым размером массива |
Dispose(Boolean) |
Реализация интерфейса с изменяемым размером массива |
EnsureCapacity(Int32) |
При необходимости увеличивает емкость этого |
Equals(Object) |
Указывает, равен ли какой-то другой объект этому объекту. (Унаследовано от Object) |
ForEach(IConsumer) |
Реализация интерфейса с изменяемым размером массива |
Get(Int32) |
Возвращает элемент в указанной позиции в этом списке. |
GetHashCode() |
Возвращает значение хэш-кода для объекта. (Унаследовано от Object) |
IndexOf(Object) |
Добавляемое (Унаследовано от AbstractList) |
Iterator() |
Возвращает итератор по элементам в этом списке в правильной последовательности. (Унаследовано от AbstractList) |
JavaFinalize() |
Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект . (Унаследовано от Object) |
LastIndexOf(Object) |
Добавляемое (Унаследовано от AbstractList) |
ListIterator() |
Добавляемое (Унаследовано от AbstractList) |
ListIterator(Int32) |
Добавляемое (Унаследовано от AbstractList) |
Notify() |
Пробуждает один поток, ожидающий монитора этого объекта. (Унаследовано от Object) |
NotifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. (Унаследовано от Object) |
Remove(Int32) |
Добавляемое (Унаследовано от AbstractList) |
Remove(Object) |
Добавляемое (Унаследовано от AbstractCollection) |
RemoveAll(ICollection) |
Добавляемое (Унаследовано от AbstractCollection) |
RemoveIf(IPredicate) |
Реализация интерфейса с изменяемым размером массива |
RemoveRange(Int32, Int32) |
Удаляет из этого списка все элементы, индекс которых находится между |
ReplaceAll(IUnaryOperator) |
Реализация интерфейса с изменяемым размером массива |
RetainAll(ICollection) |
Добавляемое (Унаследовано от AbstractCollection) |
Set(Int32, Object) |
Добавляемое (Унаследовано от AbstractList) |
SetHandle(IntPtr, JniHandleOwnership) |
Задает свойство Handle. (Унаследовано от Object) |
Size() |
Возвращает количество элементов в этом списке. |
Sort(IComparator) |
Реализация интерфейса с изменяемым размером массива |
Spliterator() |
Создает em>late-binding<</em> и <em>fail-fast</em> |
SubList(Int32, Int32) |
Добавляемое (Унаследовано от AbstractList) |
ToArray() |
Добавляемое (Унаследовано от AbstractCollection) |
ToArray(Object[]) |
Добавляемое (Унаследовано от AbstractCollection) |
ToArray<T>() |
Реализация интерфейса с изменяемым размером массива |
ToString() |
Возвращает строковое представление объекта. (Унаследовано от Object) |
TrimToSize() |
Сокращает емкость этого |
UnregisterFromRuntime() |
Реализация интерфейса с изменяемым размером массива |
Wait() |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.>< (Унаследовано от Object) |
Wait(Int64) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Wait(Int64, Int32) |
Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени. (Унаследовано от Object) |
Явные реализации интерфейса
IJavaPeerable.Disposed() |
Реализация интерфейса с изменяемым размером массива |
IJavaPeerable.DisposeUnlessReferenced() |
Реализация интерфейса с изменяемым размером массива |
IJavaPeerable.Finalized() |
Реализация интерфейса с изменяемым размером массива |
IJavaPeerable.JniManagedPeerState |
Реализация интерфейса с изменяемым размером массива |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Реализация интерфейса с изменяемым размером массива |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Реализация интерфейса с изменяемым размером массива |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Реализация интерфейса с изменяемым размером массива |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверенного средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Реализация интерфейса с изменяемым размером массива |
GetJniTypeName(IJavaPeerable) |
Реализация интерфейса с изменяемым размером массива |
ToEnumerable(IIterable) |
Реализация интерфейса с изменяемым размером массива |
ToEnumerable<T>(IIterable) |
Реализация интерфейса с изменяемым размером массива |