Spec-Zone.ru › OpenJDK 24

Класс 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, исключая последнюю.

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

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

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

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

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

parallelStream, removeIf, stream, toArray

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

forEach

Методы, объявленные в интерфейсе java.util.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. Это обеспечивает быстрое обнаружение ошибок (fail-fast) вместо непредсказуемого поведения при одновременном изменении во время итерации.

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

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

AbstractList

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

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

add

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

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

Specified by:
add в интерфейсе Collection<E>
Specified by:
add в интерфейсе List<E>
Overrides:
add в классе AbstractCollection<E>
Implementation Requirements:
Эта реализация вызывает метод add(size(), e).

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

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

get

public abstract E get(int index)
Возвращает элемент по указанному индексу в этом списке.
Specified by:
get в интерфейсе List<E>
Parameters:
index - индекс возвращаемого элемента
Returns:
элемент по указанному индексу в этом списке
Throws:
IndexOutOfBoundsException - если индекс вне допустимого диапазона (index < 0 || index >= size())

set

public E set(int index, E element)
Заменяет элемент по указанному индексу в этом списке на указанный элемент (необязательная операция).
Specified by:
set в интерфейсе List<E>
Implementation Requirements:
Эта реализация всегда выбрасывает исключение UnsupportedOperationException.
Parameters:
index - индекс заменяемого элемента
element - элемент, который будет сохранён по указанному индексу
Returns:
элемент, который был ранее по указанному индексу
Throws:
UnsupportedOperationException - если операция set не поддерживается этим списком
ClassCastException - если класс указанного элемента запрещает его добавление в этот список
NullPointerException - если указанный элемент равен null, а этот список не допускает нулевых элементов
IllegalArgumentException - если какое-либо свойство указанного элемента запрещает его добавление в этот список
IndexOutOfBoundsException - если индекс вне допустимого диапазона (index < 0 || index >= size())

add

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

remove

public E remove(int index)
Удаляет элемент по указанному индексу в этом списке (необязательная операция). Смещает все последующие элементы влево (уменьшает их индексы). Возвращает удалённый элемент.
Specified by:
remove в интерфейсе List<E>
Implementation Requirements:
Эта реализация всегда выбрасывает исключение UnsupportedOperationException.
Parameters:
index - индекс удаляемого элемента
Returns:
элемент, который был ранее по указанному индексу
Throws:
UnsupportedOperationException - если операция remove не поддерживается этим списком
IndexOutOfBoundsException - если индекс вне допустимого диапазона (index < 0 || index >= size())

indexOf

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

lastIndexOf

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

очистить

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 не поддерживается этим списком

добавитьВсе

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())

итератор

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())

подСписок

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

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


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

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

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

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

Spec-Zone.ru

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