Как связаны интерфейс Deque и класс LinkedList в Java?

«Как связаны интерфейс Deque и класс LinkedList в Java?» — вопрос из категории Алгоритмы и структуры данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java LinkedList является одной из реализаций интерфейса Deque (Double Ended Queue).

Ключевые моменты:

  • Deque определяет контракт для двусторонней очереди с методами для добавления/удаления элементов с обоих концов (addFirst(), pollLast() и т.д.).
  • LinkedList реализует этот интерфейс, что позволяет использовать его не только как список, но и как стек, очередь или дек.

Пример использования LinkedList как Deque:

Deque<String> deque = new LinkedList<>();
deque.addFirst("First");
deque.addLast("Last");
System.out.println(deque.pollFirst()); // Выведет "First"

Сравнение с ArrayDeque:

  • LinkedList: Поддерживает null элементы, эффективные вставки/удаления в середине списка (O(1) при наличии итератора).
  • ArrayDeque: Обычно быстрее для операций с началом/концом, не поддерживает null, реализован на циклическом массиве.