Как происходит удаление элементов из ArrayList и как меняется его размер в этом случае?

При удалении элемента из середины или начала списка, элементы с бόльшими индексами сдвигаются влево, заполняя освободившуюся позицию.

Короткий ответ

Что ответить на собеседовании

При удалении элемента из середины или начала списка, элементы с бόльшими индексами сдвигаются влево, заполняя освободившуюся позицию.

Подробный разбор

Ответ с пояснениями

При удалении элемента из середины или начала списка, элементы с бόльшими индексами сдвигаются влево, заполняя освободившуюся позицию.

// Пример удаления элемента по индексу
ArrayList<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
list.remove(1); // Удаление элемента "B"
// Теперь список: ["A", "C", "D"]

При удалении элемента по значению, находится первое вхождение этого элемента, и происходит аналогичный сдвиг.

// Пример удаления элемента по значению
ArrayList<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "B"));
list.remove("B"); // Удаление первого вхождения "B"
// Теперь список: ["A", "C", "B"]

Удаление элемента из конца списка не требует сдвига элементов. Просто уменьшается размер.

// Пример удаления элемента из конца
ArrayList<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
list.remove(list.size() - 1); // Удаление элемента "C"
// Теперь список: ["A", "B"]

В любом случае, при успешном удалении элемента, логический размер списка (который возвращает метод size()) уменьшается на единицу. Массив, лежащий в основе ArrayList, физически не уменьшается сразу, но при следующем добавлении элемента может произойти перераспределение памяти (увеличение capacity), если текущая вместимость недостаточна.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее