betacode

Руководство Java LinkedList

  1. LinkedList
  2. Как LinkedList хранит элементы? 
  3. Examples (as List)
  4. Example (as Deque)

1. LinkedList

LinkedList (связанный список) - это один из самых специальных классов в Java Collection Framework. Ниже приведены его характеристики:
  • LinkedList можно использовать как List (список), Deque (Double ended Queue) (двусторонняя очередь) или stack (стек).
  • LinkedList не синхронизирован (non synchronized).
  • LinkedList допускаетдублировать элементы.
  • LinkedList не допускает нулевых элементов null (характеристики Queue).
  • LinkedList поддерживает порядок вставки элементов.
public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable
LinkedList constructors
LinkedList()    

LinkedList​(Collection<? extends E> c)
LinkedList methods
void add​(int index, E element)
boolean add​(E e)
boolean addAll​(int index, Collection<? extends E> c)
boolean addAll​(Collection<? extends E> c)
void addFirst​(E e)
void addLast​(E e)
void clear()
Object clone()
boolean contains​(Object o)
Iterator<E> descendingIterator()
E element()
E get​(int index)
E getFirst()
E getLast()
int indexOf​(Object o)
int lastIndexOf​(Object o)
ListIterator<E> listIterator​(int index)
boolean offer​(E e)
boolean offerFirst​(E e)
boolean offerLast​(E e)
E peek()
E peekFirst()
E peekLast()
E poll()
E pollFirst()
E pollLast()
E pop()
void push​(E e)
E remove()
E remove​(int index)
boolean remove​(Object o)
E removeFirst()
boolean removeFirstOccurrence​(Object o)
E removeLast()
boolean removeLastOccurrence​(Object o)
E set​(int index, E element)
int size()
Spliterator<E> spliterator()
Object[] toArray()
<T> T[] toArray​(T[] a)

2. Как LinkedList хранит элементы? 

LinkedList управляет элементами специально, преодолевая недостатки массивов. В этом разделе мы проанализируем, как LinkedList управляет своими элементами.
Каждый LinkedList элемент обернут (wrap) объектом Node. Каждый объект Node имеет ссылку на Node, предшествующий ему и следующий Node за ним. Таким образом, мы можем перейти от первого LinkedList элемента к последнему.
Удаление элемента из LinkedList эквивалентно удалению соответствующего Node. Для этого предыдущий и следующий Node просто обновляют свои ссылки:
Вставка элемента в LinkedList также выполняется простым способом, как показано ниже:

3. Examples (as List)

LinkedList можно использовать как List, он поддерживает все методы, указанные в интерфейсе List, включая опциональные методы. Таким образом, вы можете получить доступ к элементам LinkedList через Iterator, ListIterator или Stream. Вы можете найти лучшие примеры о List в статье ниже:

4. Example (as Deque)

LinkedList также может использоваться как Deque (Double ended Queue) или как stack (стек). Лучшие примеры Deque и stack описаны в статье ниже:
Deque (Double ended Queue) (двусторонняя очередь) похожа на обычную очередь, но вы можете получить доступ к ее первому и последнему элементу.
Stack работает по принципу (Last In First Out) (Последний вставленный элемент будет извлечен первым).