Ответ
Поскольку массивы в Java имеют фиксированную длину, прямого удаления элемента не существует. Операция "удаления" реализуется одним из следующих способов:
1. Создание нового массива меньшего размера (вручную):
int[] arr = {10, 20, 30, 40, 50};
int indexToRemove = 2; // Удаляем элемент '30'
int[] newArr = new int[arr.length - 1];
// Копируем часть до удаляемого элемента
System.arraycopy(arr, 0, newArr, 0, indexToRemove);
// Копируем часть после удаляемого элемента
System.arraycopy(arr, indexToRemove + 1, newArr, indexToRemove,
arr.length - indexToRemove - 1);
// newArr = [10, 20, 40, 50]
2. Использование ArrayList (рекомендуемый способ):
ArrayList внутри использует массив, но предоставляет удобные методы, которые автоматически управляют размером и копированием.
ArrayList<Integer> list = new ArrayList<>(Arrays.asList(10, 20, 30, 40, 50));
list.remove(2); // Удаляет элемент с индексом 2 (30)
// Внутри ArrayList сдвигает все последующие элементы влево
// и уменьшает size. Массив elementData может остаться прежнего размера.
Что происходит "под капотом" при удалении из ArrayList (метод remove(int index)):
- Проверяется индекс.
- Элементы справа от удаляемого сдвигаются на одну позицию влево (через
System.arraycopy). - Последняя ячейка массива обнуляется (
elementData[--size] = null). - Вместимость (capacity) при этом обычно не уменьшается.