Встречается на собеседованиях • сегодня

В чем разница между ArrayList и LinkedList

Краткий ответ:
ArrayList быстрее при случайном доступе (get(index)), LinkedList — при вставке/удалении в середине. В остальном ArrayList обычно предпочтительнее.


Средний ответ:

  • ArrayList основан на массиве, обеспечивает быстрый доступ по индексу — O(1). Но вставка и удаление элементов (особенно в начале или середине) требует сдвига — O(n).
  • LinkedList — двусвязный список. Доступ к элементу — O(n), но вставка/удаление с известной позиции — O(1) (если есть ссылка).

Выбор зависит от характера операций:

  • много чтения по индексу — ArrayList,
  • много вставок/удалений — LinkedList.

Подробный ответ:

Свойство ArrayList LinkedList Внутреннее устройство Массив (Object[]) Двусвязный список (узлы) Доступ по индексу Очень быстрый — O(1) Медленный — O(n) Вставка/удаление (в середине) Медленно — O(n) (сдвиг) Быстро — O(1), если есть ссылка Добавление в конец Быстро, амортизировано O(1) Быстро — O(1) Поиск элемента O(n) O(n) Использование памяти Меньше (массив) Больше (два указателя на узел) Итерация Быстрая Медленнее


📌 Когда использовать:

  • ArrayList — почти всегда. Это по умолчанию основной список в Java.
  • LinkedList — если:
    • часто вставляешь/удаляешь в начале или середине,
    • строишь очередь/стек вручную (addFirst, removeLast и т.д.).

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы