В 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]
https://replit.com/@hexlet/java-arrays-removing-compact
Главное, на что нужно обратить внимание, — не происходит модификаций исходного массива numbers
. Вместо этого создаётся новый массив result
, который наполняется только подходящими под условие значениями. Именно так нужно воспринимать фразу "удалить из массива что-то".
По сути, код выше — пример агрегации. Только в отличие от предыдущих примеров, в которых результатом был примитивный тип, здесь результат — массив. Это совершенно нормально. Как вы увидите в дальнейшем, результат может быть и более сложной структурой. Сама операция прореживания (удаления элементов по определенным условиям) массива обычно называется фильтрацией.
Вам ответят команда поддержки Хекслета или другие студенты.
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт