Sobes.tech
Junior

Comment la suppression d'éléments d'ArrayList se produit-elle et comment sa taille change-t-elle dans ce cas ?

sobes.tech IA

Réponse de l'IA

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

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