Sobes.tech
Junior — Middle
97

Quelles opérations se produisent dans ArrayList lors de l'ajout d'un élément au début de la collection, si le tableau interne ne dépasse pas sa limite actuelle?

Entreprises à qui on a demandé
СБЕРСБЕР

Réponse de l'IA

sobes.tech IA

При добавлении элемента в начало ArrayList, если внутренний массив не превышает свою текущую вместимость, происходит сдвиг всех существующих элементов на одну позицию вправо, чтобы освободить место для нового элемента в индексе 0. Это реализуется с помощью System.arraycopy, который копирует элементы с позиции 0 до текущей длины на позиции 1 и далее. После сдвига новый элемент записывается в индекс 0, а размер коллекции увеличивается на 1.

Примерно так:

// Внутренний массив: elementData
// size - текущий размер
System.arraycopy(elementData, 0, elementData, 1, size);
elementData[0] = newElement;
size++;

Это операция имеет временную сложность O(n), где n — количество элементов, так как все элементы сдвигаются на одну позицию.