Класс 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 исключительно. |
Методы, объявленные в классе AbstractCollection
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray, toString | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
addAll |
Добавляет все элементы указанной коллекции в эту коллекцию (необязательная операция). |
boolean |
contains |
Возвращает true, если эта коллекция содержит указанный элемент. |
boolean |
containsAll |
Возвращает true, если эта коллекция содержит все элементы указанной коллекции. |
boolean |
isEmpty() |
Возвращает true, если эта коллекция не содержит элементов. |
boolean |
remove |
Удаляет один экземпляр указанного элемента из этой коллекции, если он присутствует (необязательная операция). |
boolean |
removeAll |
Удаляет из этой коллекции все элементы, которые также содержатся в указанной коллекции (необязательная операция). |
boolean |
retainAll |
Оставляет в этой коллекции только элементы, содержащиеся в указанной коллекции (необязательная операция). |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой коллекции. |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой коллекции; тип возвращаемого массива во время выполнения совпадает с типом указанного массива. |
String |
toString() |
Возвращает строковое представление этой коллекции. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения определенного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения определенного промежутка реального времени. |
Методы, объявленные в интерфейсе Collection
parallelStream, removeIf, stream, toArray | Модификатор и тип | Метод | Описание |
|---|---|---|
default Stream |
parallelStream() |
Возвращает, возможно, параллельный Stream, источником которого является эта коллекция. |
default boolean |
removeIf |
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция). |
default Stream |
stream() |
Возвращает последовательный Stream, источником которого является эта коллекция. |
default <T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator. |
Методы, объявленные в интерфейсе Iterable
forEach | Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
forEach |
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не выбросит исключение. |
Методы, объявленные в интерфейсе List
addAll, addFirst, addLast, contains, containsAll, getFirst, getLast, isEmpty, remove, removeAll, removeFirst, removeLast, replaceAll, retainAll, reversed, size, sort, spliterator, toArray, toArray | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
addAll |
Добавляет все элементы указанной коллекции в конец этого списка в том порядке, в котором их возвращает итератор указанной коллекции (необязательная операция). |
default void |
addFirst |
Добавляет элемент в начало этой коллекции (необязательная операция). |
default void |
addLast |
Добавляет элемент в конец этой коллекции (необязательная операция). |
boolean |
contains |
Возвращает true, если этот список содержит указанный элемент. |
boolean |
containsAll |
Возвращает true, если этот список содержит все элементы указанной коллекции. |
default E |
getFirst() |
Возвращает первый элемент этой коллекции. |
default E |
getLast() |
Возвращает последний элемент этой коллекции. |
boolean |
isEmpty() |
Возвращает true, если этот список не содержит элементов. |
boolean |
remove |
Удаляет первое вхождение указанного элемента из этого списка, если оно присутствует (необязательная операция). |
boolean |
removeAll |
Удаляет из этого списка все элементы, содержащиеся в указанной коллекции (необязательная операция). |
default E |
removeFirst() |
Удаляет и возвращает первый элемент этой коллекции (необязательная операция). |
default E |
removeLast() |
Удаляет и возвращает последний элемент этой коллекции (необязательная операция). |
default void |
replaceAll |
Заменяет каждый элемент этого списка результатом применения оператора к этому элементу (необязательная операция). |
boolean |
retainAll |
Оставляет в этом списке только элементы, содержащиеся в указанной коллекции (необязательная операция). |
default List |
reversed() |
Возвращает представление этой коллекции в обратном порядке. |
int |
size() |
Возвращает количество элементов в этом списке. |
default void |
sort |
Сортирует этот список в соответствии с порядком, задаваемым указанным Comparator (необязательная операция). |
default Spliterator |
spliterator() |
Создает Spliterator для элементов этого списка. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этого списка в правильном порядке (от первого до последнего элемента). |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этого списка в правильном порядке (от первого до последнего элемента); тип возвращаемого массива во время выполнения совпадает с типом указанного массива. |
Подробное описание полей
modCount
protected transient int modCount
Это поле используется реализациями итератора и итератора списка, возвращаемыми методами iterator и listIterator. Если значение этого поля неожиданно изменится, итератор (или итератор списка) выбросит ConcurrentModificationException в ответ на операции next, remove, previous, set или add. Это обеспечивает поведение fail-fast, а не недетерминированное поведение при параллельном изменении во время итерации.
Использование этого поля подклассами необязательно. Если подкласс желает предоставить итераторы (и итераторы списка) с поведением fail-fast, ему достаточно увеличивать это поле в методах add(int, E) и remove(int) (а также в любых других переопределённых методах, приводящих к структурным изменениям списка). Один вызов add(int, E) или remove(int) должен увеличивать значение этого поля не более чем на единицу, иначе итераторы (и итераторы списка) будут выбрасывать ложные ConcurrentModificationExceptions. Если реализация не желает предоставлять итераторы с поведением fail-fast, это поле можно игнорировать.
Подробное описание конструкторов
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)
i, такой что Objects.equals(o, get(i)), или -1, если такого индекса нет.- Определён в:
-
indexOfв интерфейсеList<E> - Требования к реализации:
- Эта реализация сначала получает итератор списка (с помощью
listIterator()). Затем она выполняет итерацию по списку, пока не будет найден указанный элемент или не будет достигнут конец списка. - Параметры:
-
o— искомый элемент - Возвращает:
- индекс первого вхождения указанного элемента в этом списке или -1, если список не содержит этот элемент
- Исключения:
-
ClassCastException— если тип указанного элемента несовместим с этим списком (необязательно) -
NullPointerException— если указанный элемент равен null, а этот список не допускает элементы null (необязательно)
lastIndexOf
public int lastIndexOf(Object o)
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(protected). - Возвращает:
- итератор элементов этого списка в правильном порядке
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(protected). - Параметры:
-
index— индекс первого элемента, возвращаемого итератором списка (при вызовеnext) - Возвращает:
- итератор списка для элементов этого списка (в правильном порядке), начиная с указанной позиции
- Исключения:
-
IndexOutOfBoundsException— если индекс выходит за допустимые границы (index < 0 || index > size())
subList
public List<E> subList(int fromIndex, int toIndex)
fromIndex включительно и toIndex исключительно. (Если fromIndex и toIndex равны, возвращаемый список пуст.) Возвращаемый список основан на этом списке, поэтому нестуктурные изменения возвращаемого списка отражаются в этом списке, и наоборот. Возвращаемый список поддерживает все необязательные операции со списком, поддерживаемые этим списком.Этот метод позволяет обойтись без явных операций над диапазонами (которые обычно существуют для массивов). Любую операцию, принимающую список, можно использовать как операцию над диапазоном, передав вместо всего списка представление subList. Например, следующий идиоматический приём удаляет диапазон элементов из списка:
list.subList(from, to).clear();
Аналогичные идиоматические приёмы можно построить для indexOf и lastIndexOf, а все алгоритмы класса Collections можно применять к subList.Семантика списка, возвращаемого этим методом, становится неопределённой, если список-основа (то есть этот список) структурно изменяется каким-либо способом, кроме изменения через возвращаемый список. (Структурными изменениями считаются изменения, которые меняют размер этого списка или иным образом нарушают его структуру так, что выполняющиеся итерации могут давать некорректные результаты.)
- Определён в:
-
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— нижняя граница subList (включительно) -
toIndex— верхняя граница subList (исключительно) - Возвращает:
- представление указанного диапазона этого списка
- Исключения:
-
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 для этого списка и его subList. Переопределение этого метода с использованием внутренних особенностей реализации списка может существенно повысить производительность операции clear для этого списка и его subList.
- Требования к реализации:
- Эта реализация получает итератор списка, расположенный перед
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.