Класс LinkedList

Класс LinkedList реализует интерфейсы сразу два интерфейса - List, Deque. LinkedList – это двусвязный список.

Основные характеристики

Двусвязный список: LinkedList обеспечивает двунаправленную связь между элементами, что облегчает эффективное добавление и удаление элементов в любой части списка.

Гибкость вставки и удаления: Благодаря структуре двусвязного списка, этот класс предоставляет операции вставки и удаления элементов в среднем за время O(1), что делает его подходящим для динамичных приложений.

Быстрый доступ к элементам: Возможность быстрого доступа к началу и концу списка, что делает LinkedList подходящим для стеков, очередей и других структур данных.

Реализация интерфейса List: LinkedList является частью интерфейса List в Java, что обеспечивает его использование в различных коллекциях и алгоритмах, основанных на списках.

Динамическое изменение размера: LinkedList автоматически увеличивает или уменьшает свой размер при добавлении или удалении элементов, что упрощает управление памятью.

Использование в итераторах: LinkedList поддерживает эффективные итераторы, что обеспечивает простой доступ и манипуляции с элементами при обходе списка.

Этот класс предоставляет разработчикам гибкую и эффективную структуру для работы с данными, особенно в случаях, когда требуется частое изменение размера и манипуляции с элементами в середине списка.

Конструкторы класса LinkedList:

  • LinkedList()
  • LinkedList(Collection<? extends Е> с)

Внутри класса LinkedList существует static inner класс Entry, с помощью которого создаются новые элементы:

private static class Entry<E>
{
    E element;
    Entry<E> next;
    Entry<E> prev;
    
    Entry(E element, Entry<E> next, Entry<E> prev)
    {
        this.element = element;
        this.next = next;
        this.prev = prev;
    }
}

Из LinkedList можно организовать стек, очередь, двойную очередь или список. На получение элемента по индексу или значению потребуется линейное время O(n). Однако, на добавление и удаление из середины списка, используя потребуется O(1). Позволяет добавлять любые значения, в том числе и null.

Пример 1. Использование класса LinkedList

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();

        list.add("F");
        list.add("B");
        list.add("D");
        list.add("E");
        list.add("C");
        list.addLast("Z");
        list.addFirst("A");
        list.add(1, "A2");
        System.out.println("Содержимое: " + list);

        list.remove("F");
        list.remove(2);
        list.removeFirst();
        list.removeLast();
        System.out.println("Содержимое после удаления: " + list);

        String val = list.get(2);
        list.set(2, val + "+");
        System.out.println("Содержимое после изменения: " + list);
    }
}
Read also:
Trustpilot
Trustpilot
Comments