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