Sobes.tech
Back to questions
Junior — Middle
59

При добавлении элемента в конец коллекции, какая из структур данных — ArrayList или LinkedList — работает быстрее?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

При добавлении элемента в конец коллекции:

  • ArrayList обычно работает быстрее, если в массиве достаточно места, потому что добавление происходит за амортизированное время O(1) — элемент просто записывается в следующую свободную ячейку.

  • Если массив заполнен, происходит расширение (копирование в новый массив), что занимает больше времени.

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

На практике, для добавления в конец, если не учитывать расширение массива, ArrayList быстрее из-за лучшей локальности данных и меньших накладных расходов на управление узлами. LinkedList выгоден, если часто нужны вставки/удаления в середине списка.

Пример:

ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(10); // Быстро, если места достаточно

LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(10); // Всегда быстро, но больше накладных расходов