При вставке элемента в центральную часть ArrayList происходит следующее:
Что происходит внутри ArrayList при вставке элемента в его центральную часть?
При вставке элемента в центральную часть ArrayList происходит следующее:
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
При вставке элемента в центральную часть ArrayList происходит следующее:
- Проверяется, достаточно ли места в внутреннем массиве для нового элемента. Если нет — происходит расширение массива (создается новый массив большего размера, и все элементы копируются).
- Все элементы, начиная с позиции вставки и до конца списка, сдвигаются на одну позицию вправо, чтобы освободить место для нового элемента.
- Новый элемент записывается в освободившуюся позицию.
Этот сдвиг элементов — операция с линейной сложностью O(n), где n — количество элементов после позиции вставки. Поэтому вставка в середину ArrayList менее эффективна, чем добавление в конец.
Пример:
ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
list.add(2, 99); // вставляем 99 на позицию с индексом 2
// После вставки: [1, 2, 99, 3, 4, 5]