Spec-Zone.ru › OpenJDK 25

Класс AbstractList<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
Параметры типа:
E - тип элементов в этом списке
Все реализуемые интерфейсы:
Iterable<E>, Collection<E>, List<E>, SequencedCollection<E>
Прямые известные подклассы:
AbstractSequentialList, ArrayList, Vector
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
Этот класс предоставляет скелетную реализацию интерфейса List, чтобы свести к минимуму усилия, необходимые для реализации этого интерфейса на основе хранилища данных с «произвольным доступом» (например, массива). Для данных с последовательным доступом (например, связанного списка) вместо этого класса предпочтительно использовать AbstractSequentialList.

Чтобы реализовать неизменяемый список, программисту достаточно расширить этот класс и предоставить реализации методов get(int) и size().

Чтобы реализовать изменяемый список, программист должен дополнительно переопределить метод set(int, E) (который в противном случае выбрасывает UnsupportedOperationException). Если размер списка может изменяться, программист должен также переопределить методы add(int, E) и remove(int).

Как правило, программисту следует предоставить конструктор без аргументов и конструктор, принимающий коллекцию, согласно рекомендации в спецификации интерфейса Collection.

В отличие от других реализаций абстрактных коллекций, программисту не нужно предоставлять реализацию итератора; итератор и итератор списка реализованы в этом классе на основе методов «произвольного доступа»: get(int), set(int, E), add(int, E) и remove(int).

В документации к каждому неабстрактному методу этого класса подробно описана его реализация. Каждый из этих методов можно переопределить, если реализуемая коллекция допускает более эффективную реализацию.

Этот класс входит в состав Java Collections Framework.

Начиная с версии:
1.2

Краткое описание полей

Модификатор и тип Поле Описание
protected int modCount
Количество раз, когда этот список был структурно изменен.

Краткое описание конструкторов

AbstractList()
Модификатор Конструктор Описание
protected
Единственный конструктор.

Краткое описание методов

Модификатор и тип Метод Описание
void add(int index, E element)
Вставляет указанный элемент в указанную позицию этого списка (необязательная операция).
boolean add(E e)
Добавляет указанный элемент в конец этого списка (необязательная операция).
boolean addAll(int index, Collection<? extends E> c)
Вставляет все элементы указанной коллекции в этот список, начиная с указанной позиции (необязательная операция).
void clear()
Удаляет все элементы из этого списка (необязательная операция).
boolean equals(Object o)
Сравнивает указанный объект с этим списком на равенство.
abstract E get(int index)
Возвращает элемент, находящийся в указанной позиции этого списка.
int hashCode()
Возвращает значение хеш-кода этого списка.
int indexOf(Object o)
Возвращает индекс первого вхождения указанного элемента в этот список или -1, если список не содержит этот элемент.
Iterator<E> iterator()
Возвращает итератор для перебора элементов этого списка в надлежащем порядке.
int lastIndexOf(Object o)
Возвращает индекс последнего вхождения указанного элемента в этот список или -1, если список не содержит этот элемент.
ListIterator<E> listIterator()
Возвращает итератор списка для перебора элементов этого списка (в надлежащем порядке).
ListIterator<E> listIterator(int index)
Возвращает итератор списка для перебора элементов этого списка (в надлежащем порядке), начиная с указанной позиции в списке.
E remove(int index)
Удаляет элемент, находящийся в указанной позиции этого списка (необязательная операция).
protected void removeRange(int fromIndex, int toIndex)
Удаляет из этого списка все элементы, индексы которых находятся в диапазоне от fromIndex включительно до toIndex исключительно.
E set(int index, E element)
Заменяет элемент, находящийся в указанной позиции этого списка, указанным элементом (необязательная операция).
List<E> subList(int fromIndex, int toIndex)
Возвращает представление части этого списка между указанными fromIndex включительно и toIndex исключительно.

Методы, объявленные в классе AbstractCollection

addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString

Методы, объявленные в классе Object

clone, finalize, getClass, notify, notifyAll, wait, wait, wait

Методы, объявленные в интерфейсе Collection

parallelStream, removeIf, stream, toArray

Методы, объявленные в интерфейсе Iterable

forEach

Методы, объявленные в интерфейсе List

addAll, addFirst, addLast, contains, containsAll, getFirst, getLast, isEmpty, remove, removeAll, removeFirst, removeLast, replaceAll, retainAll, reversed, size, sort, spliterator, toArray, toArray

Подробное описание полей

modCount

protected transient int modCount
Количество структурных изменений этого списка. К структурным изменениям относятся изменения размера списка, а также другие изменения, которые могут привести к некорректным результатам выполняющихся итераций.

Это поле используется реализациями итераторов и итераторов списка, возвращаемых методами iterator и listIterator. Если значение этого поля неожиданно изменится, итератор (или итератор списка) выбросит ConcurrentModificationException в ответ на операции next, remove, previous, set или add. Это обеспечивает поведение с быстрым отказом, а не недетерминированное поведение при одновременном изменении во время итерации.

Использование этого поля подклассами необязательно. Если подкласс должен предоставлять итераторы (и итераторы списка) с быстрым отказом, ему достаточно увеличивать это поле в методах add(int, E) и remove(int) (а также в любых других переопределяемых им методах, приводящих к структурным изменениям списка). Один вызов add(int, E) или remove(int) должен увеличивать значение этого поля не более чем на единицу, иначе итераторы (и итераторы списка) будут выбрасывать ложные ConcurrentModificationExceptions. Если реализация не должна предоставлять итераторы с быстрым отказом, это поле можно игнорировать.

Подробное описание конструкторов

AbstractList

protected AbstractList()
Единственный конструктор. (Предназначен для вызова конструкторами подклассов, обычно неявно.)

Подробное описание методов

add

public boolean add(E e)
Добавляет указанный элемент в конец этого списка (необязательная операция).

Списки, поддерживающие эту операцию, могут ограничивать набор элементов, которые можно добавить. В частности, некоторые списки не допускают добавления элементов null, а другие ограничивают тип добавляемых элементов. В документации классов списков должны быть четко указаны любые ограничения на добавляемые элементы.

Определен в:
add в интерфейсе Collection<E>
Определен в:
add в интерфейсе List<E>
Переопределяет:
add в классе AbstractCollection<E>
Требования к реализации:
Эта реализация вызывает add(size(), e).

Обратите внимание: эта реализация выбрасывает UnsupportedOperationException, если метод add(int, E) не переопределен.

Параметры:
e — элемент, который нужно добавить в конец этого списка
Возвращает:
true (согласно спецификации Collection.add(E))
Выбрасывает:
UnsupportedOperationException — если операция add не поддерживается этим списком
ClassCastException — если класс указанного элемента не позволяет добавить его в этот список
NullPointerException — если указанный элемент равен null, а этот список не допускает элементы null
IllegalArgumentException — если какое-либо свойство этого элемента не позволяет добавить его в этот список

get

public abstract E get(int index)
Возвращает элемент, расположенный в указанной позиции этого списка.
Определен в:
get в интерфейсе List<E>
Параметры:
index — индекс возвращаемого элемента
Возвращает:
элемент, расположенный в указанной позиции этого списка
Выбрасывает:
IndexOutOfBoundsException — если индекс находится вне допустимого диапазона (index < 0 || index >= size())

set

public E set(int index, E element)
Заменяет элемент, расположенный в указанной позиции этого списка, указанным элементом (необязательная операция).
Определен в:
set в интерфейсе List<E>
Требования к реализации:
Эта реализация всегда выбрасывает UnsupportedOperationException.
Параметры:
index — индекс заменяемого элемента
element — элемент, который будет сохранен в указанной позиции
Возвращает:
элемент, ранее находившийся в указанной позиции
Выбрасывает:
UnsupportedOperationException — если операция set не поддерживается этим списком
ClassCastException — если класс указанного элемента не позволяет добавить его в этот список
NullPointerException — если указанный элемент равен null, а этот список не допускает элементы null
IllegalArgumentException — если какое-либо свойство указанного элемента не позволяет добавить его в этот список
IndexOutOfBoundsException — если индекс находится вне допустимого диапазона (index < 0 || index >= size())

add

public void add(int index, E element)
Вставляет указанный элемент в заданную позицию этого списка (необязательная операция). Сдвигает элемент, находящийся в этой позиции (если он есть), и все последующие элементы вправо (увеличивает их индексы на единицу).
Определен в:
add в интерфейсе List<E>
Требования к реализации:
Эта реализация всегда выбрасывает UnsupportedOperationException.
Параметры:
index — позиция, в которую нужно вставить указанный элемент
element — вставляемый элемент
Выбрасывает:
UnsupportedOperationException — если операция add не поддерживается этим списком
ClassCastException — если класс указанного элемента не позволяет добавить его в этот список
NullPointerException — если указанный элемент равен null, а этот список не допускает элементы null
IllegalArgumentException — если какое-либо свойство указанного элемента не позволяет добавить его в этот список
IndexOutOfBoundsException — если индекс находится вне допустимого диапазона (index < 0 || index > size())

remove

public E remove(int index)
Удаляет элемент, расположенный в указанной позиции этого списка (необязательная операция). Сдвигает все последующие элементы влево (уменьшает их индексы на единицу). Возвращает удаленный из списка элемент.
Определен в:
remove в интерфейсе List<E>
Требования к реализации:
Эта реализация всегда выбрасывает UnsupportedOperationException.
Параметры:
index — индекс удаляемого элемента
Возвращает:
элемент, ранее находившийся в указанной позиции
Выбрасывает:
UnsupportedOperationException — если операция remove не поддерживается этим списком
IndexOutOfBoundsException — если индекс находится вне допустимого диапазона (index < 0 || index >= size())

indexOf

public int indexOf(Object o)
Возвращает индекс первого вхождения указанного элемента в этом списке или -1, если список не содержит этот элемент. Точнее, возвращает наименьший индекс i, для которого выполняется Objects.equals(o, get(i)), или -1, если такого индекса нет.
Определен в:
indexOf в интерфейсе List<E>
Требования к реализации:
Эта реализация сначала получает итератор списка (с помощью listIterator()). Затем она перебирает список, пока не найдет указанный элемент или не достигнет конца списка.
Параметры:
o — искомый элемент
Возвращает:
индекс первого вхождения указанного элемента в этом списке или -1, если список не содержит этот элемент
Выбрасывает:
ClassCastException — если тип указанного элемента несовместим с этим списком (необязательно)
NullPointerException — если указанный элемент равен null, а этот список не допускает элементы null (необязательно)

lastIndexOf

public int lastIndexOf(Object o)
Возвращает индекс последнего вхождения указанного элемента в этом списке или -1, если список не содержит этот элемент. Точнее, возвращает наибольший индекс i, для которого выполняется Objects.equals(o, get(i)), или -1, если такого индекса нет.
Определен в:
lastIndexOf в интерфейсе List<E>
Требования к реализации:
Эта реализация сначала получает итератор списка, указывающий на конец списка (с помощью listIterator(size())). Затем она перебирает список в обратном направлении, пока не найдет указанный элемент или не достигнет начала списка.
Параметры:
o — искомый элемент
Возвращает:
индекс последнего вхождения указанного элемента в этом списке или -1, если список не содержит этот элемент
Выбрасывает:
ClassCastException — если тип указанного элемента несовместим с этим списком (необязательно)
NullPointerException — если указанный элемент равен null, а этот список не допускает элементы null (необязательно)

clear

public void clear()
Удаляет все элементы из этого списка (необязательная операция). После возврата из этого вызова список будет пуст.
Определен в:
clear в интерфейсе Collection<E>
Определен в:
clear в интерфейсе List<E>
Переопределяет:
clear в классе AbstractCollection<E>
Требования к реализации:
Эта реализация вызывает removeRange(0, size()).

Обратите внимание: эта реализация выбрасывает UnsupportedOperationException, если remove(int index) или removeRange(int fromIndex, int toIndex) не переопределен.

Выбрасывает:
UnsupportedOperationException — если операция clear не поддерживается этим списком

addAll

public boolean addAll(int index, Collection<? extends E> c)
Вставляет все элементы указанной коллекции в этот список, начиная с заданной позиции (необязательная операция). Сдвигает элемент, находящийся в этой позиции (если он есть), и все последующие элементы вправо (увеличивает их индексы). Новые элементы появятся в этом списке в том порядке, в котором их возвращает итератор указанной коллекции. Поведение этой операции не определено, если указанная коллекция изменяется во время ее выполнения. (Это произойдет, если указанная коллекция является этим списком и не пуста.)
Определен в:
addAll в интерфейсе List<E>
Требования к реализации:
Эта реализация получает итератор указанной коллекции и перебирает ее, вставляя полученные из итератора элементы в этот список в соответствующую позицию по одному, используя add(int, E). Во многих реализациях этот метод переопределяется для повышения эффективности.

Обратите внимание: эта реализация выбрасывает UnsupportedOperationException, если метод add(int, E) не переопределен.

Параметры:
index — позиция для вставки первого элемента указанной коллекции
c — коллекция с элементами, которые нужно добавить в этот список
Возвращает:
true, если список изменился в результате вызова
Выбрасывает:
UnsupportedOperationException — если операция addAll не поддерживается этим списком
ClassCastException — если класс какого-либо элемента указанной коллекции не позволяет добавить его в этот список
NullPointerException — если указанная коллекция содержит один или несколько элементов null, а этот список не допускает элементы null, либо если указанная коллекция равна null
IllegalArgumentException — если какое-либо свойство элемента указанной коллекции не позволяет добавить его в этот список
IndexOutOfBoundsException — если индекс находится вне допустимого диапазона (index < 0 || index > size())

iterator

public Iterator<E> iterator()
Возвращает итератор по элементам этого списка в правильном порядке.
Определен в:
iterator в интерфейсе Collection<E>
Определен в:
iterator в интерфейсе Iterable<E>
Определен в:
iterator в интерфейсе List<E>
Определен в:
iterator в классе AbstractCollection<E>
Требования к реализации:
Эта реализация возвращает простую реализацию интерфейса итератора, использующую методы size(), get(int) и remove(int) базового списка.

Обратите внимание: итератор, возвращаемый этим методом, выбрасывает UnsupportedOperationException в ответ на вызов метода remove, если метод remove(int) списка не переопределен.

Эта реализация может выбрасывать исключения времени выполнения при одновременном изменении, как описано в спецификации поля modCount (защищенного).

Возвращает:
итератор по элементам этого списка в правильном порядке

listIterator

public ListIterator<E> listIterator()
Возвращает итератор списка по элементам этого списка (в правильном порядке).
Определен в:
listIterator в интерфейсе List<E>
Требования к реализации:
Эта реализация возвращает listIterator(0).
Возвращает:
итератор списка по элементам этого списка (в правильном порядке)
См. также:
  • listIterator(int)

listIterator

public ListIterator<E> listIterator(int index)
Возвращает итератор списка по элементам этого списка (в правильном порядке), начиная с указанной позиции. Указанный индекс задает первый элемент, который будет возвращен при первом вызове next. Первый вызов previous вернет элемент с индексом на единицу меньше указанного.
Определен в:
listIterator в интерфейсе List<E>
Требования к реализации:
Эта реализация возвращает простую реализацию интерфейса ListIterator, расширяющую реализацию интерфейса Iterator, возвращаемую методом iterator(). Реализация ListIterator использует методы get(int), set(int, E), add(int, E) и remove(int) базового списка.

Обратите внимание: итератор списка, возвращаемый этой реализацией, выбрасывает UnsupportedOperationException в ответ на вызовы методов remove, set и add, если методы remove(int), set(int, E) и add(int, E) списка не переопределены.

Эта реализация может выбрасывать исключения времени выполнения при одновременном изменении, как описано в спецификации поля modCount (защищенного).

Параметры:
index — индекс первого элемента, который будет возвращен итератором списка (при вызове next)
Возвращает:
итератор списка по элементам этого списка (в правильном порядке), начиная с указанной позиции
Выбрасывает:
IndexOutOfBoundsException — если индекс находится вне допустимого диапазона (index < 0 || index > size())

subList

public List<E> subList(int fromIndex, int toIndex)
Возвращает представление части этого списка между указанными fromIndex включительно и toIndex исключительно. (Если fromIndex и toIndex равны, возвращаемый список пуст.) Возвращаемый список связан с этим списком, поэтому неструктурные изменения возвращаемого списка отражаются в этом списке, и наоборот. Возвращаемый список поддерживает все необязательные операции со списками, поддерживаемые этим списком.

Этот метод избавляет от необходимости явных операций над диапазонами (которые обычно предусмотрены для массивов). Любую операцию, принимающую список, можно использовать как операцию над диапазоном, передав представление подсписка вместо всего списка. Например, следующий шаблон удаляет диапазон элементов из списка:

     list.subList(from, to).clear();
Аналогичные шаблоны можно создать для indexOf и lastIndexOf; все алгоритмы класса Collections можно применять к подсписку.

Семантика списка, возвращаемого этим методом, становится неопределенной, если базовый список (то есть этот список) подвергается структурным изменениям каким-либо способом, кроме изменений через возвращаемый список. (К структурным изменениям относятся изменения размера списка, а также другие изменения, которые могут привести к некорректным результатам выполняющихся итераций.)

Определен в:
subList в интерфейсе List<E>
Требования к реализации:
Эта реализация возвращает список, являющийся подклассом AbstractList. Подкласс хранит в закрытых полях размер подсписка (который может меняться в течение его существования) и ожидаемое значение modCount базового списка. У подкласса есть два варианта, один из которых реализует RandomAccess. Если этот список реализует RandomAccess, возвращаемый список будет экземпляром подкласса, реализующего RandomAccess.

Методы подкласса set(int, E), get(int), add(int, E), remove(int), addAll(int, Collection) и removeRange(int, int) делегируют вызовы соответствующим методам базового абстрактного списка после проверки границ индекса и корректировки смещения. Метод addAll(Collection c) просто возвращает addAll(size, c).

Метод listIterator(int) возвращает «объект-обертку» над итератором списка базового списка, созданным соответствующим методом базового списка. Метод iterator просто возвращает listIterator(), а метод size просто возвращает поле подкласса size.

Все методы сначала проверяют, равно ли фактическое значение modCount базового списка ожидаемому, и выбрасывают ConcurrentModificationException, если это не так.

Параметры:
fromIndex — нижняя граница (включительно) подсписка
toIndex — верхняя граница (исключительно) подсписка
Возвращает:
представление указанного диапазона в этом списке
Выбрасывает:
IndexOutOfBoundsException — если индекс одной из границ находится вне допустимого диапазона (fromIndex < 0 || toIndex > size)
IllegalArgumentException — если индексы границ указаны в неправильном порядке (fromIndex > toIndex)

equals

public boolean equals(Object o)
Сравнивает указанный объект с этим списком на равенство. Возвращает true тогда и только тогда, когда указанный объект также является списком, оба списка имеют одинаковый размер и все соответствующие пары элементов в двух списках равны. (Два элемента e1 и e2 равны, если (e1==null ? e2==null : e1.equals(e2)).) Иными словами, два списка считаются равными, если содержат одинаковые элементы в одинаковом порядке.
Определен в:
equals в интерфейсе Collection<E>
Определен в:
equals в интерфейсе List<E>
Переопределяет:
equals в классе Object
Требования к реализации:
Эта реализация сначала проверяет, является ли указанный объект этим списком. Если да, она возвращает true; в противном случае она проверяет, является ли указанный объект списком. Если нет, она возвращает false; если да, она перебирает оба списка, сравнивая соответствующие пары элементов. Если какое-либо сравнение возвращает false, этот метод возвращает false. Если итератор одного из списков исчерпывает элементы раньше другого, метод возвращает false (поскольку длины списков различаются); в противном случае после завершения итераций он возвращает true.
Параметры:
o — объект, который нужно сравнить с этим списком на равенство
Возвращает:
true, если указанный объект равен этому списку
См. также:
  • Object.equals(Object)
  • Set.equals(Object)
  • List.equals(Object)

hashCode

public int hashCode()
Возвращает значение хеш-кода этого списка.
Определен в:
hashCode в интерфейсе Collection<E>
Определен в:
hashCode в интерфейсе List<E>
Переопределяет:
hashCode в классе Object
Требования к реализации:
Эта реализация использует в точности тот же код, который применяется для определения функции хеширования списка в документации к методу List.hashCode().
Возвращает:
значение хеш-кода этого списка
См. также:
  • Object.hashCode()
  • Object.equals(Object)

removeRange

protected void removeRange(int fromIndex, int toIndex)
Удаляет из этого списка все элементы с индексами от fromIndex включительно до toIndex исключительно. Сдвигает все последующие элементы влево (уменьшает их индексы). В результате этого вызова список становится короче на (toIndex - fromIndex) элементов. (Если toIndex==fromIndex, операция не оказывает эффекта.)

Этот метод вызывается операцией clear для этого списка и его подсписков. Переопределение этого метода с учетом внутреннего устройства реализации списка может значительно повысить производительность операции clear для этого списка и его подсписков.

Требования к реализации:
Эта реализация получает итератор списка, расположенный перед fromIndex, и многократно вызывает ListIterator.next, а затем ListIterator.remove, пока весь диапазон не будет удален. Примечание: если ListIterator.remove требует линейного времени, этой реализации потребуется квадратичное время.
Параметры:
fromIndex — индекс первого удаляемого элемента
toIndex — индекс, следующий за последним удаляемым элементом

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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/AbstractList.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API