Sobes.tech
Назад к вопросам
Senior
5

Чем отличается ArrayList от LinkedList? Зачем они нужны, если есть массив?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

ArrayList и LinkedList — это две реализации интерфейса List в Java, но они отличаются внутренней структурой и производительностью.

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

Зачем нужны эти структуры, если есть массив?

  • Массивы имеют фиксированный размер, их нельзя динамически расширять.
  • ArrayList и LinkedList позволяют динамически изменять размер коллекции.
  • Они предоставляют удобные методы для работы с элементами (добавление, удаление, поиск).

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

ArrayList<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
System.out.println(list.get(1)); // Python

Выбор между ними зависит от сценария: если нужен быстрый случайный доступ — ArrayList, если часто вставляете/удаляете в середине — LinkedList.