Назад к вопросам
Junior
152
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

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

// Пример удаления элемента по индексу
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), если текущая вместимость недостаточна.