Sobes.tech
Junior — Middle
106

Kokios operacijos vyksta viduje ArrayList, kai pridedamas elementas į kolekcijos pradžią, jei vidinis masyvas neviršija savo dabartinės ribos?

Įmonės kur klausė
СБЕРСБЕР

Atsakymas iš AI

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 — количество элементов, так как все элементы сдвигаются на одну позицию.