Класс 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 этого класса, являются быстродействующими: если список структурно модифицируется в любой момент после создания итератора, любым способом, кроме методов итератора remove или add, итератор выбросит исключение ConcurrentModificationException. Таким образом, при одновременной модификации итератор быстро и четко завершает работу, а не рискует произвольным недетерминированным поведением в неопределенное время в будущем.
Обратите внимание, что гарантия быстродействующего поведения итератора не может быть гарантирована, так как, как правило, невозможно дать какие-либо гарантии в случае несинхронизированной одновременной модификации. Быстродействующие итераторы выбрасывают ConcurrentModificationException на основе наилучших усилий. Поэтому было бы неправильно писать программу, зависящую от этого исключения для ее корректности: поведение быстродействующих итераторов следует использовать только для обнаружения ошибок.
Этот класс является членом Java Collections Framework.
- С момента:
- 1.2
- См. также:
Краткое описание полей
Поля, объявленные в классе java.util.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() |
Создаёт отложенную и быстродействующую Spliterator над элементами в этом списке. |
List |
subList |
Возвращает представление части этого списка между указанным fromIndex, включительно, и toIndex, исключая последнюю. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы в этом списке в правильной последовательности (от первого к последнему элементу). |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы в этом списке в правильной последовательности (от первого к последнему элементу); тип возвращаемого массива — тип указанного массива. |
void |
trimToSize() |
Уменьшает ёмкость этого ArrayList экземпляра до текущего размера списка. |
Методы, объявленные в классе java.util.AbstractList
equals, hashCode
Методы, объявленные в классе java.util.AbstractCollection
containsAll, toString
Методы, объявленные в классе java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.Collection
parallelStream, stream, toArray
Методы, объявленные в интерфейсе java.util.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()
ensureCapacity
public void ensureCapacity(int minCapacity)
- Параметры:
-
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.
- Определено в:
-
toArrayв интерфейсеCollection<E> - Определено в:
-
toArrayв интерфейсеList<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Возвращает:
- массив, содержащий все элементы этого списка в правильной последовательности
- См. также:
toArray
public <T> T[] toArray(T[] a)
Если список помещается в указанный массив с избытком места (т. е. массив имеет больше элементов, чем список), элемент в массиве сразу после конца коллекции устанавливается в 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)
- Specified by:
-
setin interfaceList<E> - Overrides:
-
setin classAbstractList<E> - Parameters:
-
index- индекс элемента для замены -
element- элемент, который будет сохранён в указанной позиции - Returns:
- элемент, который ранее находился в указанной позиции
- Throws:
-
IndexOutOfBoundsException- если индекс находится вне диапазона (index < 0 || index >= size())
add
public boolean add(E e)
- Specified by:
-
addin interfaceCollection<E> - Specified by:
-
addin interfaceList<E> - Overrides:
-
addin classAbstractList<E> - Parameters:
-
e- элемент, который нужно добавить в этот список - Returns:
-
true(как указано вCollection.add(E))
add
public void add(int index, E element)
- Specified by:
-
addin interfaceList<E> - Overrides:
-
addin classAbstractList<E> - Parameters:
-
index- индекс, в который нужно вставить указанный элемент -
element- элемент, который нужно вставить - Throws:
-
IndexOutOfBoundsException- если индекс находится вне диапазона (index < 0 || index > size())
addFirst
public void addFirst(E element)
addLast
public void addLast(E element)
remove
public E remove(int index)
- Specified by:
-
removein interfaceList<E> - Overrides:
-
removein classAbstractList<E> - Parameters:
-
index- индекс удаляемого элемента - Returns:
- удаленный элемент из списка
- Throws:
-
IndexOutOfBoundsException- если индекс находится вне диапазона (index < 0 || index >= size())
removeFirst
public E removeFirst()
- Specified by:
-
removeFirstin interfaceList<E> - Specified by:
-
removeFirstin interfaceSequencedCollection<E> - Returns:
- удаленный элемент
- Throws:
-
NoSuchElementException- если коллекция пуста - Since:
- 21
removeLast
public E removeLast()
- Specified by:
-
removeLastin interfaceList<E> - Specified by:
-
removeLastin interfaceSequencedCollection<E> - Returns:
- удаленный элемент
- Throws:
-
NoSuchElementException- если коллекция пуста - Since:
- 21
equals
public boolean equals(Object o)
true тогда и только тогда, когда указанный объект также является списком, оба списка имеют одинаковый размер и все соответствующие пары элементов в двух списках равны. (Два элемента e1 и e2 равны, если (e1==null ? e2==null :
e1.equals(e2)).) Другими словами, два списка определяются как равные, если они содержат одинаковые элементы в том же порядке.- Specified by:
-
equalsin interfaceCollection<E> - Specified by:
-
equalsin interfaceList<E> - Overrides:
-
equalsin classAbstractList<E> - Parameters:
-
o- объект, который нужно сравнить на равенство с этим списком - Returns:
-
trueесли указанный объект равен этому списку - See Also:
hashCode
public int hashCode()
- Specified by:
-
hashCodein interfaceCollection<E> - Specified by:
-
hashCodein interfaceList<E> - Overrides:
-
hashCodein classAbstractList<E> - Returns:
- значение хэш-кода для этого списка
- See Also:
remove
public boolean remove(Object o)
i, таким что Objects.equals(o, get(i)) (если такой элемент существует). Возвращает true, если этот список содержал указанный элемент (или эквивалентно, если этот список изменился в результате вызова).- Specified by:
-
removein interfaceCollection<E> - Specified by:
-
removein interfaceList<E> - Overrides:
-
removein classAbstractCollection<E> - Parameters:
-
o- элемент, который нужно удалить из этого списка, если он присутствует - Returns:
-
trueесли этот список содержал указанный элемент
clear
public void clear()
- Specified by:
-
clearin interfaceCollection<E> - Specified by:
-
clearin interfaceList<E> - Overrides:
-
clearin classAbstractList<E>
addAll
public boolean addAll(Collection<? extends E> c)
- Specified by:
-
addAllin interfaceCollection<E> - Specified by:
-
addAllin interfaceList<E> - Overrides:
-
addAllin classAbstractCollection<E> - Parameters:
-
c- коллекция, содержащая элементы, которые нужно добавить в этот список - Returns:
-
trueесли этот список изменился в результате вызова - Throws:
-
NullPointerException- если указанная коллекция имеет значение null - See Also:
addAll
public boolean addAll(int index, Collection<? extends E> c)
- Specified by:
-
addAllin interfaceList<E> - Overrides:
-
addAllin classAbstractList<E> - Parameters:
-
index- индекс, с которого нужно вставить первый элемент из указанного набора -
c- набор, содержащий элементы, которые нужно добавить в этот список - Returns:
-
true, если этот список изменился в результате вызова - Throws:
-
IndexOutOfBoundsException- если индекс находится вне допустимого диапазона (index < 0 || index > size()) -
NullPointerException- если указанный набор равен null
removeRange
protected void removeRange(int fromIndex, int toIndex)
fromIndex (включительно) и toIndex (исключительно). Смещает все последующие элементы влево (уменьшает их индексы). Этот вызов укорачивает список на (toIndex - fromIndex) элементов. (Если toIndex==fromIndex, эта операция не оказывает никакого эффекта.)- Overrides:
-
removeRangein classAbstractList<E> - Parameters:
-
fromIndex- индекс первого удаляемого элемента -
toIndex- индекс после последнего удаляемого элемента - Throws:
-
IndexOutOfBoundsException- еслиfromIndexилиtoIndexнаходится вне допустимого диапазона (fromIndex < 0 || toIndex > size() || toIndex < fromIndex)
removeAll
public boolean removeAll(Collection<?> c)
- Specified by:
-
removeAllin interfaceCollection<E> - Specified by:
-
removeAllin interfaceList<E> - Overrides:
-
removeAllin classAbstractCollection<E> - Parameters:
-
c- набор, содержащий элементы, которые нужно удалить из этого списка - Returns:
-
true, если этот список изменился в результате вызова - Throws:
-
ClassCastException- если класс элемента этого списка несовместим с указанным набором (необязательное) -
NullPointerException- если этот список содержит null-элемент, а указанный набор не допускает null-элементов (необязательное), или если указанный набор равен null - See Also:
retainAll
public boolean retainAll(Collection<?> c)
- Specified by:
-
retainAllin interfaceCollection<E> - Specified by:
-
retainAllin interfaceList<E> - Overrides:
-
retainAllin classAbstractCollection<E> - Parameters:
-
c- набор, содержащий элементы, которые нужно оставить в этом списке - Returns:
-
true, если этот список изменился в результате вызова - Throws:
-
ClassCastException- если класс элемента этого списка несовместим с указанным набором (необязательное) -
NullPointerException- если этот список содержит null-элемент, а указанный набор не допускает null-элементов (необязательное), или если указанный набор равен null - See Also:
listIterator
public ListIterator<E> listIterator(int index)
next. Начальный вызов previous вернёт элемент с указанным индексом минус один. Возвращаемый итератор списка является быстропроверяющим.
- Specified by:
-
listIteratorin interfaceList<E> - Overrides:
-
listIteratorin classAbstractList<E> - Parameters:
-
index- индекс первого элемента, который будет возвращен итератором списка (вызовомnext) - Returns:
- итератор списка по элементам этого списка (в правильном порядке), начиная с указанной позиции в списке
- Throws:
-
IndexOutOfBoundsException- если индекс находится вне допустимого диапазона (index < 0 || index > size())
listIterator
public ListIterator<E> listIterator()
Возвращаемый итератор списка является быстропроверяющим.
- Specified by:
-
listIteratorin interfaceList<E> - Overrides:
-
listIteratorin classAbstractList<E> - Returns:
- итератор списка по элементам этого списка (в правильном порядке)
- See Also:
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 могут применяться к подсписку. Семантика списка, возвращаемого этим методом, становится неопределённой, если базовый список (то есть этот список) изменяется структурно любым способом, кроме как через возвращаемый список. (Структурные модификации — это такие, которые изменяют размер этого списка или каким-либо образом нарушают его, так что выполняемые итерации могут давать неверные результаты.)
- Specified by:
-
subListin interfaceList<E> - Overrides:
-
subListin classAbstractList<E> - Parameters:
-
fromIndex- нижняя граница (включительно) подсписка -
toIndex- верхняя граница (исключительно) подсписка - Returns:
- представление указанного диапазона в этом списке
- Throws:
-
IndexOutOfBoundsException- если индекс конечной точки находится вне допустимого диапазона(fromIndex < 0 || toIndex > size) -
IllegalArgumentException- если индексы конечных точек находятся в неправильном порядке(fromIndex > toIndex)
forEach
public void forEach(Consumer<? super E> action)
IterableIterable, пока все элементы не будут обработаны или действие не выбросит исключение. Действия выполняются в порядке итерации, если этот порядок указан. Исключения, выброшенные действием, передаются вызывающему объекту. Поведение этого метода не определено, если действие производит побочные эффекты, которые изменяют исходный источник элементов, если не указана политика конкурентных модификаций в переопределённом классе.
- Specified by:
-
forEachin interfaceIterable<E> - Parameters:
-
action- действие, которое нужно выполнить для каждого элемента - Throws:
-
NullPointerException- если указанное действие равно null
spliterator
public Spliterator<E> spliterator()
Spliterator над элементами в этом списке. Spliterator сообщает о Spliterator.SIZED, Spliterator.SUBSIZED и Spliterator.ORDERED. Реализующие классы должны документировать объявление дополнительных характеристик.
- Specified by:
-
spliteratorв интерфейсеCollection<E> - Specified by:
-
spliteratorв интерфейсеIterable<E> - Specified by:
-
spliteratorв интерфейсеList<E> - Returns:
Spliteratorнад элементами в этом списке- Since:
- 1.8
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Specified by:
-
removeIfв интерфейсеCollection<E> - Parameters:
-
filter- предикат, возвращающийtrueдля элементов, подлежащих удалению - Returns:
-
true, если элементы были удалены - Throws:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/ArrayList.html