Sobes.tech
Назад к вопросам
Junior — Middle
64

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

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

sobes.tech AI

В Java массивы имеют фиксированный размер, поэтому при удалении элемента из массива нельзя просто «удалить» ячейку памяти. Вместо этого обычно происходит следующее:

  1. Создаётся новый массив меньшего размера (на один элемент меньше).
  2. Копируются все элементы, кроме удаляемого, из старого массива в новый.
  3. Ссылка на старый массив заменяется ссылкой на новый.

В памяти старый массив остаётся до тех пор, пока на него есть ссылки, после чего он будет очищен сборщиком мусора.

Если говорить о низкоуровневом понимании, то:

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

Пример кода:

int[] oldArray = {1, 2, 3, 4};
int removeIndex = 2; // удалить элемент с индексом 2 (число 3)

int[] newArray = new int[oldArray.length - 1];
for (int i = 0, j = 0; i < oldArray.length; i++) {
    if (i != removeIndex) {
        newArray[j++] = oldArray[i];
    }
}
oldArray = newArray; // теперь oldArray указывает на новый массив без удалённого элемента

Таким образом, удаление элемента из массива в Java — это создание нового массива и копирование данных без удалённого элемента.