Класс LinkedList<E>
- Type Parameters:
E- тип элементов, хранимых в этой коллекции
- Все реализуемые интерфейсы:
-
Serializable,Cloneable,Iterable<E>,Collection<E>,Deque<E>,List<E>,Queue<E>,SequencedCollection<E>
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
List и Deque. Реализует все необязательные операции списка и допускает все элементы (включая null). Все операции выполняются так, как ожидается для двусвязного списка. Операции, которые индексируют список, будут проходить по списку с начала или конца, в зависимости от того, какой из них ближе к указанному индексу.
Обратите внимание, что эта реализация не синхронизирована. Если несколько потоков одновременно обращаются к связанному списку, и по крайней мере один из потоков изменяет список структурно, он должен быть синхронизирован внешним образом. (Структурное изменение — это любая операция, добавляющая или удаляющая один или несколько элементов; простое изменение значения элемента не является структурным изменением.) Это обычно достигается путем синхронизации на некотором объекте, естественным образом инкапсулирующем список. Если такого объекта нет, список следует «оборачивать» с помощью метода Collections.synchronizedList. Это лучше всего сделать при создании, чтобы предотвратить случайный несинхронизированный доступ к списку:
List list = Collections.synchronizedList(new LinkedList(...));
Итераторы, возвращаемые методами iterator и listIterator этого класса, являются быстропроваливающимися: если список структурно изменяется в любое время после создания итератора, каким-либо способом, кроме использования собственных методов итератора remove или add, итератор выбросит исключение ConcurrentModificationException. Таким образом, при одновременном изменении итератор быстро и четко завершает работу, а не рискует произвольным неопределенным поведением в неопределенное время в будущем.
Обратите внимание, что поведение быстропроваливающегося итератора не гарантируется, поскольку, вообще говоря, невозможно сделать какие-либо жесткие гарантии в случае несинхронизированного одновременного изменения. Быстропроваливающиеся итераторы выбрасывают ConcurrentModificationException на основе наилучшего усилия. Поэтому неправильно писать программу, которая зависела бы от этого исключения для своей корректности: поведение быстропроваливающегося итератора следует использовать только для обнаружения ошибок.
Этот класс является членом Java Collections Framework.
- Since:
- 1.2
- См. также:
Краткое описание полей
Поля, объявленные в классе java.util.AbstractList
modCount
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
LinkedList() |
Создаёт пустой список. |
LinkedList |
Создаёт список, содержащий элементы указанной коллекции в порядке, в котором они возвращаются итератором коллекции. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
add |
Вставляет указанный элемент в указанную позицию в этом списке. |
boolean |
add |
Добавляет указанный элемент в конец этого списка. |
boolean |
addAll |
Вставляет все элементы указанной коллекции в этот список, начиная с указанной позиции. |
boolean |
addAll |
Добавляет все элементы указанной коллекции в конец этого списка в порядке, в котором они возвращаются итератором указанной коллекции. |
void |
addFirst |
Вставляет указанный элемент в начало этого списка. |
void |
addLast |
Добавляет указанный элемент в конец этого списка. |
void |
clear() |
Удаляет все элементы из этого списка. |
Object |
clone() |
Возвращает поверхностную копию этого LinkedList. |
boolean |
contains |
Возвращает true, если этот список содержит указанный элемент. |
Iterator |
descendingIterator() |
Возвращает итератор по элементам этого списка в обратном порядке. |
E |
element() |
Получает голову (первый элемент) этого списка, не удаляя его. |
E |
get |
Возвращает элемент по указанной позиции в этом списке. |
E |
getFirst() |
Возвращает первый элемент в этом списке. |
E |
getLast() |
Возвращает последний элемент в этом списке. |
int |
indexOf |
Возвращает индекс первого вхождения указанного элемента в этом списке или -1, если этот список не содержит элемент. |
int |
lastIndexOf |
Возвращает индекс последнего вхождения указанного элемента в этом списке или -1, если этот список не содержит элемент. |
ListIterator |
listIterator |
Возвращает итератор по элементам этого списка (в правильной последовательности), начиная с указанной позиции в списке. |
boolean |
offer |
Добавляет указанный элемент в конец (как последний элемент) этого списка. |
boolean |
offerFirst |
Вставляет указанный элемент в начало этого списка. |
boolean |
offerLast |
Вставляет указанный элемент в конец этого списка. |
E |
peek() |
Получает голову (первый элемент) этого списка, не удаляя его. |
E |
peekFirst() |
Получает первый элемент этого списка, не удаляя его, или возвращает null, если этот список пуст. |
E |
peekLast() |
Получает последний элемент этого списка, не удаляя его, или возвращает null, если этот список пуст. |
E |
poll() |
Получает и удаляет голову (первый элемент) этого списка. |
E |
pollFirst() |
Получает и удаляет первый элемент этого списка, или возвращает null, если этот список пуст. |
E |
pollLast() |
Получает и удаляет последний элемент этого списка, или возвращает null, если этот список пуст. |
E |
pop() |
Извлекает элемент из стека, представленного этим списком. |
void |
push |
Добавляет элемент в стек, представленный этим списком. |
E |
remove() |
Получает и удаляет голову (первый элемент) этого списка. |
E |
remove |
Удаляет элемент по указанной позиции в этом списке. |
boolean |
remove |
Удаляет первое вхождение указанного элемента из этого списка, если он присутствует. |
E |
removeFirst() |
Удаляет и возвращает первый элемент из этого списка. |
boolean |
removeFirstOccurrence |
Удаляет первое вхождение указанного элемента в этом списке (при обходе списка с головы к хвосту). |
E |
removeLast() |
Удаляет и возвращает последний элемент из этого списка. |
boolean |
removeLastOccurrence |
Удаляет последнее вхождение указанного элемента в этом списке (при обходе списка с головы к хвосту). |
LinkedList |
reversed() |
Возвращает список, отсортированный в обратном порядке. |
E |
set |
Заменяет элемент в указанной позиции в этом списке указанным элементом. |
int |
size() |
Возвращает количество элементов в этом списке. |
Spliterator |
spliterator() |
Создаёт отложенную и быстродействующую Spliterator по элементам в этом списке. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы в этом списке в правильной последовательности (от первого к последнему элементу). |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы в этом списке в правильной последовательности (от первого к последнему элементу); тип возвращаемого массива совпадает с указанным массивом. |
Методы, объявленные в классе java.util.AbstractSequentialList
iterator
Методы, объявленные в классе java.util.AbstractList
equals, hashCode, listIterator, removeRange, subList
Методы, объявленные в классе java.util.AbstractCollection
containsAll, isEmpty, removeAll, retainAll, toString
Методы, объявленные в классе java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.Collection
parallelStream, removeIf, stream, toArray
Методы, объявленные в интерфейсе java.util.List
containsAll, equals, hashCode, isEmpty, iterator, listIterator, removeAll, replaceAll, retainAll, sort, subList
Подробное описание конструкторов
LinkedList
public LinkedList()
LinkedList
public LinkedList(Collection<? extends E> c)
- Параметры:
-
c- коллекция, элементы которой должны быть помещены в этот список - Исключения:
-
NullPointerException- если указанная коллекция равна null
Подробное описание методов
getFirst
public E getFirst()
- Определено в:
-
getFirstв интерфейсеDeque<E> - Определено в:
-
getFirstв интерфейсеList<E> - Определено в:
-
getFirstв интерфейсеSequencedCollection<E> - Возвращает:
- первый элемент в этом списке
- Исключения:
-
NoSuchElementException- если этот список пуст
getLast
public E getLast()
- Определено в:
-
getLastв интерфейсеDeque<E> - Определено в:
-
getLastв интерфейсеList<E> - Определено в:
-
getLastв интерфейсеSequencedCollection<E> - Возвращает:
- последний элемент в этом списке
- Исключения:
-
NoSuchElementException- если этот список пуст
removeFirst
public E removeFirst()
- Определено в:
-
removeFirstв интерфейсеDeque<E> - Определено в:
-
removeFirstв интерфейсеList<E> - Определено в:
-
removeFirstв интерфейсеSequencedCollection<E> - Возвращает:
- первый элемент из этого списка
- Исключения:
-
NoSuchElementException- если этот список пуст
removeLast
public E removeLast()
- Определено в:
-
removeLastв интерфейсеDeque<E> - Определено в:
-
removeLastв интерфейсеList<E> - Определено в:
-
removeLastв интерфейсеSequencedCollection<E> - Возвращает:
- последний элемент из этого списка
- Исключения:
-
NoSuchElementException- если этот список пуст
addFirst
addLast
contains
public boolean contains(Object o)
true, если этот список содержит указанный элемент. Более формально, возвращает true, если и только если этот список содержит как минимум один элемент e, такой что Objects.equals(o, e).- Определено в:
-
containsв интерфейсеCollection<E> - Определено в:
-
containsв интерфейсеDeque<E> - Определено в:
-
containsв интерфейсеList<E> - Переопределяет:
-
containsв классеAbstractCollection<E> - Параметры:
-
o- элемент, присутствие которого в этом списке нужно проверить - Возвращает:
-
true, если этот список содержит указанный элемент
size
add
public boolean add(E e)
Этот метод эквивалентен методу addLast(E).
remove
public boolean remove(Object o)
i, таким что Objects.equals(o, get(i)) (если такой элемент существует). Возвращает true, если этот список содержал указанный элемент (или эквивалентно, если этот список изменился в результате вызова).- Определено в:
-
removeв интерфейсеCollection<E> - Определено в:
-
removeв интерфейсеDeque<E> - Определено в:
-
removeв интерфейсеList<E> - Переопределяет:
-
removeв классеAbstractCollection<E> - Параметры:
-
o- удаляемый элемент, если он присутствует - Возвращает:
-
true, если этот список содержал указанный элемент
addAll
public boolean addAll(Collection<? extends E> c)
- Определено в:
-
addAllв интерфейсеCollection<E> - Определено в:
-
addAllв интерфейсеDeque<E> - Определено в:
-
addAllв интерфейсеList<E> - Переопределяет:
-
addAllв классеAbstractCollection<E> - Параметры:
-
c- коллекция, содержащая добавляемые элементы - Возвращает:
-
true, если этот список изменился в результате вызова - Исключения:
-
NullPointerException- если указанная коллекция равна null - См. также:
addAll
public boolean addAll(int index, Collection<? extends E> c)
- Определено в:
-
addAllв интерфейсеList<E> - Переопределяет:
-
addAllв классеAbstractSequentialList<E> - Параметры:
-
index- индекс, с которого следует вставить первый элемент из указанной коллекции -
c- коллекция, содержащая добавляемые элементы - Возвращает:
-
true, если этот список изменился в результате вызова - Исключения:
-
IndexOutOfBoundsException- если индекс вне диапазона (index < 0 || index > size()) -
NullPointerException- если указанная коллекция равна null
очистить
public void clear()
- Указано:
-
clearв интерфейсеCollection<E> - Указано:
-
clearв интерфейсеList<E> - Переопределяет:
-
clearв классеAbstractList<E>
получить
public E get(int index)
- Указано:
-
getв интерфейсеList<E> - Переопределяет:
-
getв классеAbstractSequentialList<E> - Параметры:
-
index- индекс возвращаемого элемента - Возвращает:
- элемент в указанной позиции в этом списке
- Выбрасывает:
-
IndexOutOfBoundsException- если индекс находится вне диапазона (index < 0 || index >= size())
установить
public E set(int index, E element)
- Указано:
-
setв интерфейсеList<E> - Переопределяет:
-
setв классеAbstractSequentialList<E> - Параметры:
-
index- индекс заменяемого элемента -
element- элемент, который будет сохранён в указанной позиции - Возвращает:
- элемент, ранее находившийся в указанной позиции
- Выбрасывает:
-
IndexOutOfBoundsException- если индекс находится вне диапазона (index < 0 || index >= size())
добавить
public void add(int index, E element)
- Указано:
-
addв интерфейсеList<E> - Переопределяет:
-
addв классеAbstractSequentialList<E> - Параметры:
-
index- индекс, в который необходимо вставить указанный элемент -
element- вставляемый элемент - Выбрасывает:
-
IndexOutOfBoundsException- если индекс находится вне диапазона (index < 0 || index > size())
удалить
public E remove(int index)
- Указано:
-
removeв интерфейсеList<E> - Переопределяет:
-
removeв классеAbstractSequentialList<E> - Параметры:
-
index- индекс удаляемого элемента - Возвращает:
- элемент, ранее находившийся в указанной позиции
- Выбрасывает:
-
IndexOutOfBoundsException- если индекс находится вне диапазона (index < 0 || index >= size())
indexOf
public int indexOf(Object o)
i такой, что Objects.equals(o, get(i)), или -1, если такого индекса нет.lastIndexOf
public int lastIndexOf(Object o)
i такой, что Objects.equals(o, get(i)), или -1, если такого индекса нет.- Указано:
-
lastIndexOfв интерфейсеList<E> - Переопределяет:
-
lastIndexOfв классеAbstractList<E> - Параметры:
-
o- искомый элемент - Возвращает:
- индекс последнего вхождения указанного элемента в этом списке или -1, если этот список не содержит элемента
peek
элемент
poll
удалить
добавить
добавитьВНачало
public boolean offerFirst(E e)
- Указано:
-
offerFirstв интерфейсеDeque<E> - Параметры:
-
e- вставляемый элемент - Возвращает:
-
true(как указано вDeque.offerFirst(E)) - С:
- 1.6
добавитьВКонец
public boolean offerLast(E e)
- Указано:
-
offerLastв интерфейсеDeque<E> - Параметры:
-
e- вставляемый элемент - Возвращает:
-
true(как указано вDeque.offerLast(E)) - С:
- 1.6
получитьПервый
получитьПоследний
получитьИУдалитьПервый
pollLast
push
public void push(E e)
Этот метод эквивалентен addFirst(E).
pop
public E pop()
Этот метод эквивалентен removeFirst().
- Указано в:
-
popв интерфейсеDeque<E> - Возвращает:
- элемент в начале этого списка (который является вершиной стека, представленного этим списком)
- Выбрасывает:
-
NoSuchElementException- если этот список пуст - С момента:
- 1.6
removeFirstOccurrence
public boolean removeFirstOccurrence(Object o)
- Указано в:
-
removeFirstOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, который нужно удалить из этого списка, если он присутствует - Возвращает:
-
true, если список содержал указанный элемент - С момента:
- 1.6
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
- Указано в:
-
removeLastOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, который нужно удалить из этого списка, если он присутствует - Возвращает:
-
true, если список содержал указанный элемент - С момента:
- 1.6
listIterator
public ListIterator<E> listIterator(int index)
List.listIterator(int). Итератор списка быстропроваливающийся: если список структурно модифицируется в любое время после создания итератора, любым способом, кроме как через собственные методы итератора remove или add, итератор списка выбросит исключение ConcurrentModificationException. Таким образом, при одновременной модификации итератор быстро и чисто завершает работу, а не рискует произвольным непредсказуемым поведением в неопределенное время в будущем.
- Указано в:
-
listIteratorв интерфейсеList<E> - Указано в:
-
listIteratorв классеAbstractSequentialList<E> - Параметры:
-
index- индекс первого элемента, который будет возвращен итератором списка (вызовомnext) - Возвращает:
- итератор списка элементов в этом списке (в правильной последовательности), начиная с указанной позиции в списке
- Выбрасывает:
-
IndexOutOfBoundsException- если индекс находится вне допустимого диапазона (index < 0 || index > size()) - См. также:
descendingIterator
public Iterator<E> descendingIterator()
Deque- Указано в:
-
descendingIteratorв интерфейсеDeque<E> - Возвращает:
- итератор по элементам в этом деке в обратном порядке
- С момента:
- 1.6
clone
toArray
public Object[] toArray()
Возвращаемый массив будет «безопасным» в том смысле, что к нему не сохраняются ссылки из этого списка. (Другими словами, этот метод должен выделить новый массив). Таким образом, вызывающая сторона свободна изменять возвращаемый массив.
Этот метод действует как мост между массивоориентированными и коллекционными API.
- Указано в:
-
toArrayв интерфейсеCollection<E> - Указано в:
-
toArrayв интерфейсеList<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Возвращает:
- массив, содержащий все элементы этого списка в правильной последовательности
- См. также:
toArray
public <T> T[] toArray(T[] a)
Если список помещается в указанный массив с избыточным местом (т. е. массив имеет больше элементов, чем список), элемент в массиве сразу после конца списка устанавливается в null. (Это полезно для определения длины списка только, если вызывающая сторона знает, что список не содержит элементов null.)
Как и метод toArray(), этот метод действует как мост между массивоориентированными и коллекционными API. Кроме того, этот метод позволяет точно контролировать тип выполнения массива вывода и может в определённых случаях использоваться для экономии расходов на выделение памяти.
Предположим, что x — это список, известно, что он содержит только строки. Следующий код может быть использован для выгрузки списка в новый выделенный массив из String:
String[] y = x.toArray(new String[0]); Обратите внимание, что toArray(new Object[0]) идентичен по функции toArray().- Указано в:
-
toArrayв интерфейсеCollection<E> - Указано в:
-
toArrayв интерфейсеList<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Параметры типа:
T- тип компонента массива, содержащего коллекцию- Параметры:
-
a- массив, в который должны быть помещены элементы списка, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа выполнения. - Возвращает:
- массив, содержащий элементы списка
- Выбрасывает:
-
ArrayStoreException- если тип выполнения указанного массива не является надтипом типа выполнения каждого элемента в этом списке -
NullPointerException- если указанный массив null
spliterator
public Spliterator<E> spliterator()
Spliterator по элементам в этом списке. Spliterator сообщает о Spliterator.SIZED и Spliterator.ORDERED. Переопределяющие реализации должны документировать сообщение об дополнительных характеристических значениях.
- Указано в:
-
spliteratorв интерфейсеCollection<E> - Указано в:
-
spliteratorв интерфейсеIterable<E> - Указано в:
-
spliteratorв интерфейсеList<E> - Примечание реализации:
Spliteratorдополнительно сообщает оSpliterator.SUBSIZEDи реализуетtrySplitдля разрешения ограниченного параллелизма.- Возвращает:
Spliteratorпо элементам в этом списке- С момента:
- 1.8
reversed
public LinkedList<E> reversed()
Изменения в представлении с обратным порядком разрешены и будут переданы в этот список. Кроме того, изменения в этом списке будут видны в представлении с обратным порядком.
© 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/LinkedList.html