Назад к вопросам
СБЕР
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.