Зарегистрируйтесь, чтобы продолжить обучение

Удаление элементов массива Java: Массивы

В 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]

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

Главное, на что нужно обратить внимание, — не происходит ли модификаций исходного массива numbers. Вместо этого создается новый массив result, который наполняется только подходящими под условие значениями. Именно так нужно воспринимать фразу "удалить из массива что-то".

По сути, код выше — пример агрегации. Только в отличие от предыдущих примеров, в которых результатом был примитивный тип, здесь результат — массив. Это совершенно нормально. Как вы увидите в дальнейшем, результат может быть и более сложной структурой. Сама операция прореживания (удаления элементов по определенным условиям) массива обычно называется фильтрацией.


Дополнительные материалы

  1. Готовый метод для удаления элементов из массива из библиотеки Apache Commons

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff