Выбор ответа Junior Коллекции изнутри спрашивают часто обновлено

ArrayList или LinkedList

Вопрос

Какое утверждение про ArrayList и LinkedList верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: get(i) у ArrayList O(1), у LinkedList O(n). ArrayList хранит массив, доступ по индексу мгновенный, LinkedList идёт по узлам.

Варианты ответа

  1. Добавление в конец у ArrayList всегда O(n) из-за копирования
  2. LinkedList занимает меньше памяти, потому что нет запаса ёмкости
  3. Вставка в середину LinkedList по индексу O(1)
  4. get(i) у ArrayList O(1), у LinkedList O(n)правильный ответ

Разбор

ArrayList хранит массив, доступ по индексу мгновенный, LinkedList идёт по узлам. Добавление в конец ArrayList амортизированно O(1): копирование при росте в 1.5 раза случается редко. LinkedList тратит больше памяти: каждый элемент это узел с двумя ссылками и заголовком объекта. Вставка по индексу в LinkedList O(n), потому что до места нужно дойти; O(1) только при вставке через уже стоящий на месте итератор.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме