Как удалить элемент из массива java

Аватар пользователя Сергей Якимович
Сергей Якимович
18 ноября 2022

Можно воспользоваться методом System.arraycopy() :

var result = new int[values.length - 1];
// сначала копируем элементы с 0 до index
System.arraycopy(values, 0, result, 0, index);
// затем с index+1 до конца
System.arraycopy(values, index + 1, result, index, values.length - 1 - index);
0 0
Аватар пользователя Maksim Litvinov
Maksim Litvinov
22 августа 2022

В Java массив имеет фиксированный размер и простого способа удалить элемент из массива не существует. Удаление элемента сводится к формированию нового массива на основе старого, в которм будет отсутствовать удаляемый элемент. Ниже пример реализации метода remove(), который удаляет элемент по определенному индексу:

import java.util.Arrays;

class MyArrayUtils {
    public static int[] remove(int[] values, int index) {
      // Создаем пустой массив размером на один меньше чем исходный
      // так как мы удаляем один элемент
      var result = new int[values.length - 1];

      for (var i = 0; i < values.length; i++) {
          if (i != index) { // Копируем все кроме index
              // Элементы стоящие дальше index смещаются влево
              var newIndex = i < index ? i : i - 1;
              result[newIndex] = values[i];
          }
      }

      return result;
    }
}

int[] numbers = {1, 5, 8, 100};

System.out.println(Arrays.toString(MyArrayUtils.remove(numbers, 2)));
// => [1, 5, 100]

// Исходный массив не поменялся
System.out.println(Arrays.toString(numbers));
// => [1, 5, 8, 100]
0 0