Класс 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 |
Количество раз, когда этот список был структурно изменён. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Единственный конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
add |
Вставляет указанный элемент в указанную позицию в этом списке (необязательная операция). |
boolean |
add |
Добавляет указанный элемент в конец этого списка (необязательная операция). |
boolean |
addAll |
Вставляет все элементы указанной коллекции в этот список в указанной позиции (необязательная операция). |
void |
clear() |
Удаляет все элементы из этого списка (необязательная операция). |
boolean |
equals |
Сравнивает указанный объект с этим списком на равенство. |
abstract E |
get |
Возвращает элемент в указанной позиции в этом списке. |
int |
hashCode() |
Возвращает значение хэш-кода для этого списка. |
int |
indexOf |
Возвращает индекс первого вхождения указанного элемента в этот список или -1, если этот список не содержит элемент. |
Iterator |
iterator() |
Возвращает итератор по элементам в этом списке в правильном порядке. |
int |
lastIndexOf |
Возвращает индекс последнего вхождения указанного элемента в этот список или -1, если этот список не содержит элемент. |
ListIterator |
listIterator() |
Возвращает итератор списка по элементам в этом списке (в правильном порядке). |
ListIterator |
listIterator |
Возвращает итератор списка по элементам в этом списке (в правильном порядке), начиная с указанной позиции в списке. |
E |
remove |
Удаляет элемент в указанной позиции в этом списке (необязательная операция). |
protected void |
removeRange |
Удаляет из этого списка все элементы, индекс которых находится между fromIndex, включительно, и toIndex, исключая последнюю. |
E |
set |
Заменяет элемент в указанной позиции в этом списке указанным элементом (необязательная операция). |
List |
subList |
Возвращает представление части этого списка между указанными 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.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)
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)
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
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, если указанный объект равен этому списку - См. также:
hashCode
public int hashCode()
- Определено в:
-
hashCodeв интерфейсеCollection<E> - Определено в:
-
hashCodeв интерфейсеList<E> - Переопределяет:
-
hashCodeв классеObject - Требования к реализации:
- Эта реализация использует точно тот же код, который используется для определения функции хэширования списка в документации для метода
List.hashCode(). - Возвращает:
- значение хэш-кода для этого списка
- См. также:
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