Класс LinkedList<E>
- Type Parameters:
-
E- тип элементов, хранящихся в этом наборе
- All Implemented Interfaces:
-
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
- See Also:
Краткое описание полей
Поля, объявленные в классе 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
public void addFirst(E e)
- Унаследовано от:
-
addFirstв интерфейсеDeque<E> - Унаследовано от:
-
addFirstв интерфейсеList<E> - Унаследовано от:
-
addFirstв интерфейсеSequencedCollection<E> - Параметры:
-
e- добавляемый элемент
addLast
public void addLast(E e)
Этот метод эквивалентен методу add(E).
- Унаследовано от:
-
addLastв интерфейсеDeque<E> - Унаследовано от:
-
addLastв интерфейсеList<E> - Унаследовано от:
-
addLastв интерфейсеSequencedCollection<E> - Параметры:
-
e- добавляемый элемент
contains
public boolean contains(Object o)
e такой, что Objects.equals(o, e). - Унаследовано от:
-
containsв интерфейсеCollection<E> - Унаследовано от:
-
containsв интерфейсеDeque<E> - Унаследовано от:
-
containsв интерфейсеList<E> - Переопределяет:
-
containsв классеAbstractCollection<E> - Параметры:
-
o- элемент, присутствие которого в этом списке необходимо проверить - Возвращает:
-
trueесли этот список содержит указанный элемент
size
public int size()
- Унаследовано от:
-
sizeв интерфейсеCollection<E> - Унаследовано от:
-
sizeв интерфейсеDeque<E> - Унаследовано от:
-
sizeв интерфейсеList<E> - Возвращает:
- количество элементов в этом списке
add
public boolean add(E e)
Этот метод эквивалентен методу addLast(E).
- Унаследовано от:
-
addв интерфейсеCollection<E> - Унаследовано от:
-
addв интерфейсеDeque<E> - Унаследовано от:
-
addв интерфейсеList<E> - Унаследовано от:
-
addв интерфейсеQueue<E> - Переопределяет:
-
addв классеAbstractList<E> - Параметры:
-
e- элемент, который нужно добавить в этот список - Возвращает:
-
true(как указано вCollection.add(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
clear
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, если такого индекса нет.- Указано в:
-
indexOfв интерфейсеList<E> - Переопределяет:
-
indexOfв классеAbstractList<E> - Параметры:
-
o- искомый элемент - Возвращает:
- индекс первого вхождения указанного элемента в этот список, или -1, если этот список не содержит элемент
lastIndexOf
public int lastIndexOf(Object o)
i, такой что Objects.equals(o, get(i)), или -1, если такого индекса нет.- Указано в:
-
lastIndexOfв интерфейсеList<E> - Переопределяет:
-
lastIndexOfв классеAbstractList<E> - Параметры:
-
o- искомый элемент - Возвращает:
- индекс последнего вхождения указанного элемента в этот список, или -1, если этот список не содержит элемент
peek
public E peek()
- Указано в:
-
peekв интерфейсеDeque<E> - Указано в:
-
peekв интерфейсеQueue<E> - Возвращает:
- голову этого списка или
null, если этот список пуст - С:
- 1.5
элемент
public E element()
- Указано в:
-
elementв интерфейсеDeque<E> - Указано в:
-
elementв интерфейсеQueue<E> - Возвращает:
- голову этого списка
- Выбрасывает:
-
NoSuchElementException- если этот список пуст - С:
- 1.5
poll
public E poll()
- Указано в:
-
pollв интерфейсеDeque<E> - Указано в:
-
pollв интерфейсеQueue<E> - Возвращает:
- голову этого списка или
null, если этот список пуст - С:
- 1.5
удалить
public E remove()
- Указано в:
-
removeв интерфейсеDeque<E> - Указано в:
-
removeв интерфейсеQueue<E> - Возвращает:
- голову этого списка
- Выбрасывает:
-
NoSuchElementException- если этот список пуст - С:
- 1.5
предложить
public boolean offer(E e)
- Указано в:
-
offerв интерфейсеDeque<E> - Указано в:
-
offerв интерфейсеQueue<E> - Параметры:
-
e- добавляемый элемент - Возвращает:
-
true(как указано вQueue.offer(E)) - С:
- 1.5
предложитьПервым
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
peekПервым
public E peekFirst()
null, если этот список пуст.- Указано в:
-
peekFirstв интерфейсеDeque<E> - Возвращает:
- первый элемент этого списка или
null, если этот список пуст - С:
- 1.6
peekПоследним
public E peekLast()
null, если этот список пуст.- Указано в:
-
peekLastв интерфейсеDeque<E> - Возвращает:
- последний элемент этого списка или
null, если этот список пуст - С:
- 1.6
pollПервым
public E pollFirst()
null, если этот список пуст.- Указано в:
-
pollFirstв интерфейсеDeque<E> - Возвращает:
- первый элемент этого списка, или
null, если этот список пуст - С:
- 1.6
pollПоследним
public E pollLast()
null, если этот список пуст.- Указано в:
-
pollLastв интерфейсеDeque<E> - Возвращает:
- последний элемент этого списка, или
null, если этот список пуст - С:
- 1.6
положитьВСтек
public void push(E e)
Этот метод эквивалентен addFirst(E).
- Указано в:
-
pushв интерфейсеDeque<E> - Параметры:
-
e- элемент для помещения в стек - С:
- 1.6
pop
public E pop()
Этот метод эквивалентен методу removeFirst().
- Specified by:
-
popin interfaceDeque<E> - Returns:
- элемент в начале этого списка (который является вершиной стека, представленного этим списком)
- Throws:
-
NoSuchElementException- если этот список пуст - Since:
- 1.6
removeFirstOccurrence
public boolean removeFirstOccurrence(Object o)
- Specified by:
-
removeFirstOccurrencein interfaceDeque<E> - Parameters:
-
o- элемент, который нужно удалить из этого списка, если он присутствует - Returns:
-
trueесли список содержал указанный элемент - Since:
- 1.6
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
- Specified by:
-
removeLastOccurrencein interfaceDeque<E> - Parameters:
-
o- элемент, который нужно удалить из этого списка, если он присутствует - Returns:
-
trueесли список содержал указанный элемент - Since:
- 1.6
listIterator
public ListIterator<E> listIterator(int index)
List.listIterator(int). Итератор списка быстропроваливающийся: если список структурно изменяется в любое время после создания итератора, любым способом, кроме методов собственного итератора списка remove или add, итератор списка выбросит исключение ConcurrentModificationException. Таким образом, при одновременном изменении итератор быстро и четко завершает работу, а не рискует произвольным, непредсказуемым поведением в неопределенное время в будущем.
- Specified by:
-
listIteratorin interfaceList<E> - Specified by:
-
listIteratorin classAbstractSequentialList<E> - Parameters:
-
index- индекс первого элемента, который будет возвращен итератором списка (методомnext) - Returns:
- итератор списка элементов в этом списке (в правильной последовательности), начиная с указанной позиции в списке
- Throws:
-
IndexOutOfBoundsException- если индекс выходит за пределы диапазона (index < 0 || index > size()) - See Also:
descendingIterator
public Iterator<E> descendingIterator()
Deque- Specified by:
-
descendingIteratorin interfaceDeque<E> - Returns:
- итератор элементов в этом деке в обратном порядке
- Since:
- 1.6
clone
public Object clone()
LinkedList. (Сами элементы не клонируются.)- Overrides:
-
clonein classObject - Returns:
- неглубокую копию экземпляра этого
LinkedList - See Also:
toArray
public Object[] toArray()
Возвращаемый массив будет «безопасным» в том смысле, что к нему не сохраняются ссылки из этого списка. (Другими словами, этот метод должен выделить новый массив). Таким образом, вызывающий метод свободен изменять возвращаемый массив.
Этот метод служит мостом между массивоориентированными и коллекционными API.
- Specified by:
-
toArrayin interfaceCollection<E> - Specified by:
-
toArrayin interfaceList<E> - Overrides:
-
toArrayin classAbstractCollection<E> - Returns:
- массив, содержащий все элементы в этом списке в правильной последовательности
- See Also:
toArray
public <T> T[] toArray(T[] a)
Если список помещается в указанный массив с избыточным пространством (т. е. массив имеет больше элементов, чем список), элемент в массиве непосредственно после конца списка устанавливается в null. (Это полезно для определения длины списка *только* если вызывающий метод знает, что список не содержит каких-либо нулевых элементов.)
Как и метод toArray(), этот метод служит мостом между массивоориентированными и коллекционными API. Кроме того, этот метод позволяет точно контролировать тип времени выполнения выходного массива и может в определенных обстоятельствах использоваться для экономии затрат на выделение памяти.
Предположим, что x — это список, известно, что он содержит только строки. Следующий код может быть использован для выгрузки списка в новый выделенный массив типа String:
String[] y = x.toArray(new String[0]); Обратите внимание, что toArray(new Object[0]) идентичен по функции toArray().- Specified by:
-
toArrayin interfaceCollection<E> - Specified by:
-
toArrayin interfaceList<E> - Overrides:
-
toArrayin classAbstractCollection<E> - Type Parameters:
-
T- тип компонента массива, который должен содержать коллекцию - Parameters:
-
a- массив, в который должны быть помещены элементы списка, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа времени выполнения. - Returns:
- массив, содержащий элементы списка
- Throws:
-
ArrayStoreException- если тип времени выполнения указанного массива не является супертипом типа времени выполнения каждого элемента в этом списке -
NullPointerException- если указанный массив равен null
spliterator
public Spliterator<E> spliterator()
Spliterator над элементами в этом списке. Spliterator сообщает о Spliterator.SIZED и Spliterator.ORDERED. В переопределенных реализациях следует документировать указание дополнительных характеристических значений.
- Specified by:
-
spliteratorin interfaceCollection<E> - Specified by:
-
spliteratorin interfaceIterable<E> - Specified by:
-
spliteratorin interfaceList<E> - Implementation Note:
Spliteratorдополнительно сообщает оSpliterator.SUBSIZEDи реализуетtrySplitдля обеспечения ограниченного параллелизма.- Returns:
Spliteratorнад элементами в этом списке- Since:
- 1.8
reversed
public LinkedList<E> reversed()
Изменения в представлении в обратном порядке допускаются и будут передаваться в этот список. Кроме того, изменения в этом списке будут видны в представлении в обратном порядке.
- Specified by:
-
reversedin interfaceDeque<E> - Specified by:
-
reversedin interfaceList<E> - Specified by:
-
reversedin interfaceSequencedCollection<E> - Returns:
- представление этого набора в обратном порядке, как
List - Since:
- 21
© 1993, 2023, 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/21/docs/api/java.base/java/util/LinkedList.html