Класс ArrayList<E>
- Параметры типа:
E— тип элементов этого списка
- Все реализуемые интерфейсы:
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess, SequencedCollection<E>
- Известные прямые подклассы:
AttributeList, RoleList, RoleUnresolvedList
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
List на основе массива с изменяемым размером. Реализует все необязательные операции со списками и допускает любые элементы, включая null. Помимо реализации интерфейса List, этот класс предоставляет методы для управления размером массива, который используется внутри для хранения списка. (Этот класс примерно эквивалентен Vector, за исключением того, что он не синхронизирован.) Операции size, isEmpty, get, set, getFirst, getLast, removeLast, iterator, listIterator и reversed выполняются за постоянное время. Операции add и addLast выполняются за амортизированное постоянное время, то есть добавление n элементов требует времени O(n). Все остальные операции выполняются за линейное время (в общих чертах). По сравнению с реализацией LinkedList постоянный множитель мал.
Каждый экземпляр ArrayList имеет ёмкость. Емкость — это размер массива, используемого для хранения элементов списка. Она всегда не меньше размера списка. По мере добавления элементов в ArrayList его емкость автоматически увеличивается. Детали политики увеличения не определены, за исключением того, что добавление элемента имеет амортизированную стоимость, равную постоянному времени.
Приложение может увеличить емкость экземпляра ArrayList перед добавлением большого количества элементов с помощью операции ensureCapacity. Это может сократить количество промежуточных перераспределений памяти.
Обратите внимание, что эта реализация не синхронизирована. Если несколько потоков одновременно обращаются к экземпляру ArrayList и хотя бы один из потоков структурно изменяет список, доступ должен быть синхронизирован извне. (Структурным изменением считается любая операция, добавляющая или удаляющая один или несколько элементов либо явно изменяющая размер базового массива; простое изменение значения элемента структурным изменением не является.) Обычно для этого синхронизацию выполняют по объекту, который естественным образом содержит список. Если такого объекта нет, список следует «обернуть» с помощью метода Collections.synchronizedList. Лучше всего делать это при создании списка, чтобы предотвратить случайный несинхронизированный доступ к нему:
List list = Collections.synchronizedList(new ArrayList(...));
Итераторы, возвращаемые методами iterator и listIterator этого класса, являются fail-fast: если после создания итератора список каким-либо образом структурно изменяется, кроме как с помощью собственных методов итератора remove или add, итератор выбрасывает исключение ConcurrentModificationException. Таким образом, при параллельном изменении итератор быстро и корректно завершается с ошибкой, а не рискует проявить произвольное недетерминированное поведение в неопределенный момент в будущем.
Обратите внимание, что поведение итератора fail-fast не может быть гарантировано, поскольку, вообще говоря, невозможно дать какие-либо строгие гарантии при несинхронизированном параллельном изменении. Итераторы fail-fast выбрасывают ConcurrentModificationException по возможности. Поэтому было бы неправильно писать программу, корректность которой зависит от этого исключения: поведение итераторов fail-fast следует использовать только для обнаружения ошибок.
Этот класс является частью Java Collections Framework.
- Начиная с версии:
- 1.2
- См. также:
Краткое описание полей
Поля, объявленные в классе AbstractList
modCount
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ArrayList() |
Создает пустой список с начальной емкостью десять. |
ArrayList |
Создает пустой список с указанной начальной емкостью. |
ArrayList |
Создает список, содержащий элементы указанной коллекции, в порядке их возвращения итератором коллекции. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
add |
Вставляет указанный элемент в указанную позицию этого списка. |
boolean |
add |
Добавляет указанный элемент в конец этого списка. |
boolean |
addAll |
Вставляет все элементы указанной коллекции в этот список, начиная с указанной позиции. |
boolean |
addAll |
Добавляет все элементы указанной коллекции в конец этого списка в порядке их возвращения итератором указанной коллекции. |
void |
addFirst |
Добавляет элемент в начало этой коллекции (необязательная операция). |
void |
addLast |
Добавляет элемент в конец этой коллекции (необязательная операция). |
void |
clear() |
Удаляет все элементы из этого списка. |
Object |
clone() |
Возвращает поверхностную копию этого экземпляра ArrayList. |
boolean |
contains |
Возвращает true, если этот список содержит указанный элемент. |
void |
ensureCapacity |
При необходимости увеличивает емкость этого экземпляра ArrayList, чтобы он мог вместить не меньше элементов, чем указано аргументом минимальной емкости. |
boolean |
equals |
Сравнивает указанный объект с этим списком на равенство. |
void |
forEach |
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не выбросит исключение. |
E |
get |
Возвращает элемент, находящийся в указанной позиции этого списка. |
E |
getFirst() |
Возвращает первый элемент этой коллекции. |
E |
getLast() |
Возвращает последний элемент этой коллекции. |
int |
hashCode() |
Возвращает значение хеш-кода этого списка. |
int |
indexOf |
Возвращает индекс первого вхождения указанного элемента в этом списке или -1, если список не содержит этот элемент. |
boolean |
isEmpty() |
Возвращает true, если этот список не содержит элементов. |
Iterator |
iterator() |
Возвращает итератор элементов этого списка в надлежащем порядке. |
int |
lastIndexOf |
Возвращает индекс последнего вхождения указанного элемента в этом списке или -1, если список не содержит этот элемент. |
ListIterator |
listIterator() |
Возвращает итератор списка для элементов этого списка (в надлежащем порядке). |
ListIterator |
listIterator |
Возвращает итератор списка для элементов этого списка (в надлежащем порядке), начиная с указанной позиции в списке. |
E |
remove |
Удаляет элемент, находящийся в указанной позиции этого списка. |
boolean |
remove |
Удаляет первое вхождение указанного элемента из этого списка, если оно присутствует. |
boolean |
removeAll |
Удаляет из этого списка все элементы, содержащиеся в указанной коллекции. |
E |
removeFirst() |
Удаляет и возвращает первый элемент этой коллекции (необязательная операция). |
boolean |
removeIf |
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция). |
E |
removeLast() |
Удаляет и возвращает последний элемент этой коллекции (необязательная операция). |
protected void |
removeRange |
Удаляет из этого списка все элементы с индексами от fromIndex включительно до toIndex исключительно. |
boolean |
retainAll |
Оставляет в этом списке только те элементы, которые содержатся в указанной коллекции. |
E |
set |
Заменяет элемент, находящийся в указанной позиции этого списка, указанным элементом. |
int |
size() |
Возвращает количество элементов в этом списке. |
Spliterator |
spliterator() |
Создает привязываемый с задержкой и fail-fast Spliterator для элементов этого списка. |
List |
subList |
Возвращает представление части этого списка между указанными fromIndex включительно и toIndex исключительно. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этого списка в надлежащем порядке (от первого элемента до последнего). |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этого списка в надлежащем порядке (от первого элемента до последнего); тип возвращаемого массива во время выполнения соответствует типу указанного массива. |
void |
trimToSize() |
Уменьшает емкость этого экземпляра ArrayList до текущего размера списка. |
Методы, объявленные в классе AbstractList
equals, hashCode
Методы, объявленные в классе AbstractCollection
containsAll, toString
Методы, объявленные в интерфейсе Collection
parallelStream, stream, toArray
Методы, объявленные в интерфейсе List
containsAll, replaceAll, reversed, sort
Подробное описание конструкторов
ArrayList
public ArrayList(int initialCapacity)
- Параметры:
-
initialCapacity— начальная ёмкость списка - Исключения:
-
IllegalArgumentException— если указанная начальная ёмкость отрицательна
ArrayList
public ArrayList()
ArrayList
public ArrayList(Collection<? extends E> c)
- Параметры:
-
c— коллекция, элементы которой будут помещены в этот список - Исключения:
-
NullPointerException— если указанная коллекция равна null
Подробное описание методов
trimToSize
public void trimToSize()
ArrayList до текущего размера списка. Приложение может использовать эту операцию, чтобы минимизировать объём памяти, занимаемый экземпляром ArrayList.ensureCapacity
public void ensureCapacity(int minCapacity)
ArrayList, чтобы он мог вместить как минимум количество элементов, указанное аргументом минимальной ёмкости.- Параметры:
-
minCapacity— желаемая минимальная ёмкость
size
isEmpty
public boolean isEmpty()
true, если этот список не содержит элементов.- Определён в:
-
isEmptyв интерфейсеCollection<E> - Определён в:
-
isEmptyв интерфейсеList<E> - Переопределяет:
-
isEmptyв классеAbstractCollection<E> - Возвращает:
-
true, если этот список не содержит элементов
contains
public boolean contains(Object o)
true, если этот список содержит указанный элемент. Точнее, возвращает true тогда и только тогда, когда этот список содержит хотя бы один элемент e, такой что Objects.equals(o, e).- Определён в:
-
containsв интерфейсеCollection<E> - Определён в:
-
containsв интерфейсеList<E> - Переопределяет:
-
containsв классеAbstractCollection<E> - Параметры:
-
o— элемент, наличие которого в этом списке нужно проверить - Возвращает:
-
true, если этот список содержит указанный элемент
indexOf
public int indexOf(Object o)
i, такой что Objects.equals(o, get(i)), или -1, если такого индекса нет.lastIndexOf
public int lastIndexOf(Object o)
i, такой что Objects.equals(o, get(i)), или -1, если такого индекса нет.- Определён в:
-
lastIndexOfв интерфейсеList<E> - Переопределяет:
-
lastIndexOfв классеAbstractList<E> - Параметры:
-
o— элемент, который нужно найти - Возвращает:
- индекс последнего вхождения указанного элемента в этот список или -1, если список не содержит этот элемент
clone
toArray
public Object[] toArray()
Возвращаемый массив будет «безопасным», поскольку этот список не хранит на него ссылок. (Другими словами, этот метод должен выделить новый массив.) Таким образом, вызывающий код может свободно изменять возвращённый массив.
Этот метод служит связующим звеном между API на основе массивов и API на основе коллекций.
- Определён в:
-
toArrayв интерфейсеCollection<E> - Определён в:
-
toArrayв интерфейсеList<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Возвращает:
- массив, содержащий все элементы этого списка в правильном порядке
- См. также:
toArray
public <T> T[] toArray(T[] a)
Если список помещается в указанный массив с запасом (то есть массив содержит больше элементов, чем список), элемент массива непосредственно после конца коллекции устанавливается в null. (Это полезно для определения длины списка только в том случае, если вызывающий код знает, что список не содержит элементов null.)
- Определён в:
-
toArrayв интерфейсеCollection<E> - Определён в:
-
toArrayв интерфейсеList<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Параметры типа:
T— тип элементов массива, который будет содержать коллекцию- Параметры:
-
a— массив, в который будут помещены элементы списка, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа во время выполнения. - Возвращает:
- массив, содержащий элементы списка
- Исключения:
-
ArrayStoreException— если тип указанного массива во время выполнения не является супертипом типа во время выполнения каждого элемента этого списка -
NullPointerException— если указанный массив равен null
get
public E get(int index)
- Определён в:
-
getв интерфейсеList<E> - Определён в:
-
getв классеAbstractList<E> - Параметры:
-
index— индекс возвращаемого элемента - Возвращает:
- элемент, находящийся в указанной позиции этого списка
- Исключения:
-
IndexOutOfBoundsException— если индекс выходит за допустимые границы (index < 0 || index >= size())
getFirst
public E getFirst()
- Определён в:
-
getFirstв интерфейсеList<E> - Определён в:
-
getFirstв интерфейсеSequencedCollection<E> - Возвращает:
- полученный элемент
- Исключения:
-
NoSuchElementException— если эта коллекция пуста - Начиная с версии:
- 21
getLast
public E getLast()
- Определён в:
-
getLastв интерфейсеList<E> - Определён в:
-
getLastв интерфейсеSequencedCollection<E> - Возвращает:
- полученный элемент
- Исключения:
-
NoSuchElementException— если эта коллекция пуста - Начиная с версии:
- 21
set
public E set(int index, E element)
- Определён в:
-
setв интерфейсеList<E> - Переопределяет:
-
setв классеAbstractList<E> - Параметры:
-
index— индекс заменяемого элемента -
element— элемент, который будет сохранён в указанной позиции - Возвращает:
- элемент, ранее находившийся в указанной позиции
- Исключения:
-
IndexOutOfBoundsException— если индекс выходит за допустимые границы (index < 0 || index >= size())
add
public boolean add(E e)
- Определён в:
-
addв интерфейсеCollection<E> - Определён в:
-
addв интерфейсеList<E> - Переопределяет:
-
addв классеAbstractList<E> - Параметры:
-
e— элемент, который нужно добавить в конец этого списка - Возвращает:
-
true(как указано вCollection.add(E))
add
public void add(int index, E element)
- Определён в:
-
addв интерфейсеList<E> - Переопределяет:
-
addв классеAbstractList<E> - Параметры:
-
index— индекс, в который нужно вставить указанный элемент -
element— вставляемый элемент - Исключения:
-
IndexOutOfBoundsException— если индекс выходит за допустимые границы (index < 0 || index > size())
addFirst
public void addFirst(E element)
addLast
public void addLast(E element)
remove
public E remove(int index)
- Определён в:
-
removeв интерфейсеList<E> - Переопределяет:
-
removeв классеAbstractList<E> - Параметры:
-
index— индекс удаляемого элемента - Возвращает:
- элемент, удалённый из списка
- Исключения:
-
IndexOutOfBoundsException— если индекс выходит за допустимые границы (index < 0 || index >= size())
removeFirst
public E removeFirst()
- Определён в:
-
removeFirstв интерфейсеList<E> - Определён в:
-
removeFirstв интерфейсеSequencedCollection<E> - Возвращает:
- удалённый элемент
- Исключения:
-
NoSuchElementException— если эта коллекция пуста - Начиная с версии:
- 21
removeLast
public E removeLast()
- Определён в:
-
removeLastв интерфейсеList<E> - Определён в:
-
removeLastв интерфейсеSequencedCollection<E> - Возвращает:
- удалённый элемент
- Исключения:
-
NoSuchElementException— если эта коллекция пуста - Начиная с версии:
- 21
equals
public boolean equals(Object o)
true тогда и только тогда, когда указанный объект также является списком, оба списка имеют одинаковый размер и все соответствующие пары элементов в этих списках равны. (Два элемента e1 и e2 равны, если (e1==null ? e2==null :
e1.equals(e2)).) Иными словами, два списка считаются равными, если содержат одни и те же элементы в одинаковом порядке.- Определён в:
-
equalsв интерфейсеCollection<E> - Определён в:
-
equalsв интерфейсеList<E> - Переопределяет:
-
equalsв классеAbstractList<E> - Параметры:
-
o— объект, который нужно сравнить на равенство с этим списком - Возвращает:
-
true, если указанный объект равен этому списку - См. также:
hashCode
public int hashCode()
- Определён в:
-
hashCodeв интерфейсеCollection<E> - Определён в:
-
hashCodeв интерфейсеList<E> - Переопределяет:
-
hashCodeв классеAbstractList<E> - Возвращает:
- значение хеш-кода для этого списка
- См. также:
remove
public boolean remove(Object o)
i, такой что Objects.equals(o, get(i)) (если такой элемент существует). Возвращает true, если этот список содержал указанный элемент (или, что равнозначно, если в результате вызова список изменился).- Определён в:
-
removeв интерфейсеCollection<E> - Определён в:
-
removeв интерфейсеList<E> - Переопределяет:
-
removeв классеAbstractCollection<E> - Параметры:
-
o— элемент, который нужно удалить из этого списка, если он присутствует - Возвращает:
-
true, если этот список содержал указанный элемент
clear
public void clear()
- Определён в:
-
clearв интерфейсеCollection<E> - Определён в:
-
clearв интерфейсеList<E> - Переопределяет:
-
clearв классеAbstractList<E>
addAll
public boolean addAll(Collection<? extends E> c)
- Определён в:
-
addAllв интерфейсеCollection<E> - Определён в:
-
addAllв интерфейсеList<E> - Переопределяет:
-
addAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые нужно добавить в этот список - Возвращает:
-
true, если в результате вызова список изменился - Исключения:
-
NullPointerException— если указанная коллекция равна null - См. также:
addAll
public boolean addAll(int index, Collection<? extends E> c)
- Определён в:
-
addAllв интерфейсеList<E> - Переопределяет:
-
addAllв классеAbstractList<E> - Параметры:
-
index— индекс, в который нужно вставить первый элемент указанной коллекции -
c— коллекция, содержащая элементы, которые нужно добавить в этот список - Возвращает:
-
true, если в результате вызова список изменился - Исключения:
-
IndexOutOfBoundsException— если индекс выходит за допустимые границы (index < 0 || index > size()) -
NullPointerException— если указанная коллекция равна null
removeRange
protected void removeRange(int fromIndex, int toIndex)
fromIndex включительно до toIndex не включительно. Сдвигает все последующие элементы влево (уменьшает их индексы). В результате этого вызова длина списка уменьшается на (toIndex - fromIndex) элементов. (Если toIndex==fromIndex, эта операция не оказывает эффекта.)- Переопределяет:
-
removeRangeв классеAbstractList<E> - Параметры:
-
fromIndex— индекс первого удаляемого элемента -
toIndex— индекс после последнего удаляемого элемента - Исключения:
-
IndexOutOfBoundsException— еслиfromIndexилиtoIndexвыходит за допустимые границы (fromIndex < 0 || toIndex > size() || toIndex < fromIndex)
removeAll
public boolean removeAll(Collection<?> c)
- Определён в:
-
removeAllв интерфейсеCollection<E> - Определён в:
-
removeAllв интерфейсеList<E> - Переопределяет:
-
removeAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые нужно удалить из этого списка - Возвращает:
-
true, если в результате вызова список изменился - Исключения:
-
ClassCastException— если класс элемента этого списка несовместим с указанной коллекцией (необязательно) -
NullPointerException— если этот список содержит элемент null, а указанная коллекция не допускает элементы null (необязательно), или если указанная коллекция равна null - См. также:
retainAll
public boolean retainAll(Collection<?> c)
- Определён в:
-
retainAllв интерфейсеCollection<E> - Определён в:
-
retainAllв интерфейсеList<E> - Переопределяет:
-
retainAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые нужно оставить в этом списке - Возвращает:
-
true, если в результате вызова список изменился - Исключения:
-
ClassCastException— если класс элемента этого списка несовместим с указанной коллекцией (необязательно) -
NullPointerException— если этот список содержит элемент null, а указанная коллекция не допускает элементы null (необязательно), или если указанная коллекция равна null - См. также:
listIterator
public ListIterator<E> listIterator(int index)
next. Первоначальный вызов previous вернёт элемент с индексом на единицу меньше указанного. Возвращаемый итератор списка является быстро завершающим работу при изменениях.
- Определён в:
-
listIteratorв интерфейсеList<E> - Переопределяет:
-
listIteratorв классеAbstractList<E> - Параметры:
-
index— индекс первого элемента, который будет возвращён итератором списка (при вызовеnext) - Возвращает:
- итератор списка для элементов этого списка (в правильном порядке), начиная с указанной позиции
- Исключения:
-
IndexOutOfBoundsException— если индекс выходит за допустимые границы (index < 0 || index > size())
listIterator
public ListIterator<E> listIterator()
Возвращаемый итератор списка является быстро завершающим работу при изменениях.
- Определён в:
-
listIteratorв интерфейсеList<E> - Переопределяет:
-
listIteratorв классеAbstractList<E> - Возвращает:
- итератор списка для элементов этого списка (в правильном порядке)
- См. также:
iterator
public Iterator<E> iterator()
Возвращаемый итератор является быстро завершающим работу при изменениях.
subList
public List<E> subList(int fromIndex, int toIndex)
fromIndex включительно и toIndex исключительно. (Если fromIndex и toIndex равны, возвращаемый список пуст.) Возвращаемый список основан на этом списке, поэтому структурные изменения возвращаемого списка отражаются в этом списке, и наоборот. Возвращаемый список поддерживает все необязательные операции со списками. Этот метод устраняет необходимость в явных операциях с диапазонами (подобных тем, которые обычно существуют для массивов). Любую операцию, ожидающую список, можно использовать как операцию с диапазоном, передав представление подсписка вместо всего списка. Например, следующий шаблон удаляет диапазон элементов из списка:
list.subList(from, to).clear();
Аналогичные шаблоны можно составить для indexOf(Object) и lastIndexOf(Object), а все алгоритмы класса Collections можно применять к подсписку. Семантика списка, возвращаемого этим методом, становится неопределённой, если исходный список (то есть этот список) структурно изменяется каким-либо способом, отличным от изменения через возвращаемый список. (Структурные изменения — это изменения, которые меняют размер этого списка или иным образом изменяют его так, что выполняющиеся итерации могут давать некорректные результаты.)
- Определено в:
-
subListв интерфейсеList<E> - Переопределяет:
-
subListв классеAbstractList<E> - Параметры:
-
fromIndex— нижняя граница подсписка (включительно) -
toIndex— верхняя граница подсписка (исключительно) - Возвращает:
- представление указанного диапазона в этом списке
- Исключения:
-
IndexOutOfBoundsException— если значение индекса одной из границ выходит за допустимый диапазон(fromIndex < 0 || toIndex > size) -
IllegalArgumentException— если индексы границ указаны в неправильном порядке(fromIndex > toIndex)
forEach
public void forEach(Consumer<? super E> action)
IterableIterable, пока не будут обработаны все элементы или действие не вызовет исключение. Действия выполняются в порядке итерации, если такой порядок задан. Исключения, вызванные действием, передаются вызывающему коду. Поведение этого метода не определено, если действие выполняет побочные эффекты, изменяющие исходный источник элементов, кроме случаев, когда переопределяющий класс задаёт политику конкурентного изменения.
- Определено в:
-
forEachв интерфейсеIterable<E> - Параметры:
-
action— действие, выполняемое для каждого элемента - Исключения:
-
NullPointerException— если указанное действие равно null
spliterator
public Spliterator<E> spliterator()
Spliterator для элементов этого списка. Spliterator сообщает о характеристиках Spliterator.SIZED, Spliterator.SUBSIZED и Spliterator.ORDERED. Реализации, переопределяющие этот метод, должны документировать сообщаемые дополнительные значения характеристик.
- Определено в:
-
spliteratorв интерфейсеCollection<E> - Определено в:
-
spliteratorв интерфейсеIterable<E> - Определено в:
-
spliteratorв интерфейсеList<E> - Возвращает:
Spliteratorдля элементов этого списка- Начиная с версии:
- 1.8
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Определено в:
-
removeIfв интерфейсеCollection<E> - Параметры:
-
filter— предикат, возвращающийtrueдля элементов, подлежащих удалению - Возвращает:
-
true, если были удалены какие-либо элементы - Исключения:
-
NullPointerException— если указанный фильтр равен null
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/ArrayList.html