Класс LinkedList<E>
- Type Parameters:
-
E— тип элементов, хранящихся в этом наборе
- Все реализуемые интерфейсы:
-
Serializable,Cloneable,Iterable<E>,Collection<E>,Deque<E>,List<E>,Queue<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<E> |
descendingIterator() |
Возвращает итератор элементов в этой очереди в обратном порядке. |
E |
element() |
Извлекает, но не удаляет, голову (первый элемент) этого списка. |
E |
get |
Возвращает элемент в указанной позиции в этом списке. |
E |
getFirst() |
Возвращает первый элемент в этом списке. |
E |
getLast() |
Возвращает последний элемент в этом списке. |
int |
indexOf |
Возвращает индекс первого вхождения указанного элемента в этот список или -1, если этот список не содержит элемента. |
int |
lastIndexOf |
Возвращает индекс последнего вхождения указанного элемента в этот список или -1, если этот список не содержит элемента. |
ListIterator<E> |
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 |
Удаляет последнее вхождение указанного элемента в этом списке (при прохождении по списку от головы к хвосту). |
E |
set |
Заменяет элемент в указанной позиции в этом списке указанным элементом. |
int |
size() |
Возвращает количество элементов в этом списке. |
Spliterator<E> |
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> - Возвращает:
- первый элемент в этом списке
- Исключения:
-
NoSuchElementException- если этот список пуст
getLast
public E getLast()
- Унаследованно от:
-
getLastв интерфейсеDeque<E> - Возвращает:
- последний элемент в этом списке
- Исключения:
-
NoSuchElementException- если этот список пуст
removeFirst
public E removeFirst()
- Унаследованно от:
-
removeFirstв интерфейсеDeque<E> - Возвращает:
- первый элемент из этого списка
- Исключения:
-
NoSuchElementException- если этот список пуст
removeLast
public E removeLast()
- Унаследованно от:
-
removeLastв интерфейсеDeque<E> - Возвращает:
- последний элемент из этого списка
- Исключения:
-
NoSuchElementException- если этот список пуст
addFirst
public void addFirst(E e)
- Унаследованно от:
-
addFirstв интерфейсеDeque<E> - Параметры:
-
e- элемент для добавления
addLast
public void addLast(E e)
Этот метод эквивалентен методу add(E).
- Унаследованно от:
-
addLastв интерфейсеDeque<E> - Параметры:
-
e- элемент для добавления
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
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>
get
public E get(int index)
- Унаследованно от:
-
getв интерфейсеList<E> - Переопределяет:
-
getв классеAbstractSequentialList<E> - Параметры:
-
index- индекс возвращаемого элемента - Возвращает:
- элемент по указанной позиции в этом списке
- Исключения:
-
IndexOutOfBoundsException- если индекс находится вне допустимого диапазона (index < 0 || index >= size())
set
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
получитьПервый
public E peekFirst()
null если этот список пуст.- Определено в:
-
peekFirstв интерфейсеDeque<E> - Возвращает:
- первый элемент этого списка, или
nullесли этот список пуст - С тех пор, как:
- 1.6
получитьПоследний
public E peekLast()
null если этот список пуст.- Определено в:
-
peekLastв интерфейсеDeque<E> - Возвращает:
- последний элемент этого списка, или
nullесли этот список пуст - С тех пор, как:
- 1.6
получитьИУдалитьПервый
public E pollFirst()
null если этот список пуст.- Определено в:
-
pollFirstв интерфейсеDeque<E> - Возвращает:
- первый элемент этого списка, или
nullесли этот список пуст - С тех пор, как:
- 1.6
получитьИУдалитьПоследний
public E pollLast()
null если этот список пуст.- Определено в:
-
pollLastв интерфейсеDeque<E> - Возвращает:
- последний элемент этого списка, или
nullесли этот список пуст - С тех пор, как:
- 1.6
вставить
public void push(E e)
Этот метод эквивалентен addFirst(E).
- Определено в:
-
pushв интерфейсеDeque<E> - Параметры:
-
e- вставляемый элемент - С тех пор, как:
- 1.6
извлечь
public E pop()
Этот метод эквивалентен removeFirst().
- Определено в:
-
popв интерфейсеDeque<E> - Возвращает:
- элемент в начале этого списка (который является вершиной стека, представленного этим списком)
- Исключения:
-
NoSuchElementException- если этот список пуст - С тех пор, как:
- 1.6
удалитьПервоеВхождение
public boolean removeFirstOccurrence(Object o)
- Определено в:
-
removeFirstOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, который должен быть удален из этого списка, если он присутствует - Возвращает:
-
trueесли список содержал указанный элемент - С тех пор, как:
- 1.6
removeLastOccurrence
public boolean removeLastOccurrence(Object o)
- Specified by:
-
removeLastOccurrenceв интерфейсеDeque<E> - Parameters:
-
o- элемент, который нужно удалить из этого списка, если он присутствует - Returns:
-
trueесли список содержал указанный элемент - Since:
- 1.6
listIterator
public ListIterator<E> listIterator(int index)
List.listIterator(int). Итератор списка является быстропроверяющим: если список структурно изменяется в любое время после создания итератора, любым способом, кроме использования методов итератора списка remove или add, итератор списка выбросит исключение ConcurrentModificationException. Таким образом, при одновременном изменении итератор быстро и чисто завершает работу, а не рискует произвольным недетерминированным поведением в неопределенное время в будущем.
- Specified by:
-
listIteratorв интерфейсеList<E> - Specified by:
-
listIteratorв классеAbstractSequentialList<E> - Parameters:
-
index- индекс первого элемента, который должен быть возвращен итератором списка (вызовомnext) - Returns:
- итератор ListIterator элементов в этом списке (в правильной последовательности), начиная с указанной позиции в списке
- Throws:
-
IndexOutOfBoundsException- если индекс находится вне диапазона (index < 0 || index > size()) - See Also:
descendingIterator
public Iterator<E> descendingIterator()
Deque- Specified by:
-
descendingIteratorв интерфейсеDeque<E> - Returns:
- итератор по элементам в этом deque в обратном порядке
- Since:
- 1.6
clone
public Object clone()
LinkedList. (Элементы сами по себе не клонируются.)- Overrides:
-
cloneв классеObject - Returns:
- неглубокая копия экземпляра этого
LinkedList - See Also:
toArray
public Object[] toArray()
Возвращаемый массив будет "безопасным" в том смысле, что ссылки на него не сохраняются этим списком. (Другими словами, этот метод должен выделять новый массив). Таким образом, вызывающий метод может свободно изменять возвращаемый массив.
Этот метод служит мостом между основанными на массиве и основанными на коллекции API.
- Specified by:
-
toArrayв интерфейсеCollection<E> - Specified by:
-
toArrayв интерфейсеList<E> - Overrides:
-
toArrayв классеAbstractCollection<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:
-
toArrayв интерфейсеCollection<E> - Specified by:
-
toArrayв интерфейсеList<E> - Overrides:
-
toArrayв классеAbstractCollection<E> - Type Parameters:
-
T- тип компонента массива, который должен содержать коллекцию - Parameters:
-
a- массив, в который должны быть помещены элементы списка, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа времени выполнения. - Returns:
- массив, содержащий элементы списка
- Throws:
-
ArrayStoreException- если тип времени выполнения указанного массива не является надтипом типа времени выполнения каждого элемента в этом списке -
NullPointerException- если указанный массив равен null
spliterator
public Spliterator<E> spliterator()
Spliterator над элементами в этом списке. Spliterator сообщает о Spliterator.SIZED и Spliterator.ORDERED. Реализующие методы должны документировать указание дополнительных характеристик.
- Specified by:
-
spliteratorв интерфейсеCollection<E> - Specified by:
-
spliteratorв интерфейсеIterable<E> - Specified by:
-
spliteratorв интерфейсеList<E> - Implementation Note:
Spliteratorдополнительно сообщает оSpliterator.SUBSIZEDи реализуетtrySplitдля поддержки ограниченного параллелизма.- Returns:
Spliteratorнад элементами в этом списке- Since:
- 1.8
© 1993, 2021, 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/17/docs/api/java.base/java/util/LinkedList.html