Назад к вопросам
СБЕР
Junior — Middle
66
Какие операции происходят внутри ArrayList при добавлении элемента в начало коллекции, если внутренний массив не превышает свою текущую границу?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
При добавлении элемента в начало ArrayList, если внутренний массив не превышает свою текущую вместимость, происходит сдвиг всех существующих элементов на одну позицию вправо, чтобы освободить место для нового элемента в индексе 0. Это реализуется с помощью System.arraycopy, который копирует элементы с позиции 0 до текущей длины на позиции 1 и далее. После сдвига новый элемент записывается в индекс 0, а размер коллекции увеличивается на 1.
Примерно так:
// Внутренний массив: elementData
// size - текущий размер
System.arraycopy(elementData, 0, elementData, 1, size);
elementData[0] = newElement;
size++;
Это операция имеет временную сложность O(n), где n — количество элементов, так как все элементы сдвигаются на одну позицию.