Как удалить элемент массива Java?
Есть массив в Java, надо удалить элемент (ячейку) из него.
- Вопрос задан более трёх лет назад
- 34299 просмотров
Комментировать
Решения вопроса 1
Ячейку вы никак не удалите. Можно только занулить значение. Если вам нужны динамические массивы (массивы переменной длины), то вам нужны коллекции, а именно ArrayList (либо, если вам важна потокобезопасность — Vector).
Почитать об этом можно здесь: habrahabr.ru/post/128269
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Удаление элементов массива — 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]
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Удаление элемента из массива в Java
Давайте добавим зависимость commons-lang3 в файл pom.xml нашего проекта :
dependency> groupId>org.apache.commonsgroupId> artifactId>commons-lang3artifactId> version>3.12.0version> dependency>
3. Удаление элемента
Прежде чем мы начнем, давайте посмотрим, что происходит, когда мы удаляем элемент из массива без использования класса ArrayUtils из библиотеки Apache Commons Lang.
Учитывая приведенный ниже массив, давайте удалим элемент с индексом 2 :
Простым способом сделать это было бы заменить значение, хранящееся в индексе 2 , значением, хранящимся в индексе 3 , пока мы не достигнем конца массива:

Обратите внимание, что при удалении элемента указанным выше образом размер массива останется прежним , а значение, хранящееся в последнем индексе, будет пустым. Так как массивы имеют фиксированный размер памяти, выделенный во время инициализации , удаление элемента не изменяет размер массива.
Теперь давайте посмотрим на представление массива при удалении элемента с помощью метода удаления из класса ArrayUtils из Apache Commons Lang:

Как мы видим, размер массива здесь корректируется до 5 после удаления элемента. Метод удаления создает новый массив и копирует все значения, кроме удаляемого.
Класс ArrayUtils предоставляет два способа удаления элемента из массива. Давайте посмотрим на это дальше.
4. Использование индекса в качестве входных данных
Первый способ удалить элемент — по его индексу с помощью ArrayUtils#remove :
public int[] removeAnElementWithAGivenIndex(int[] array, int index) return ArrayUtils.remove(array, index); >
Другим вариантом является метод removeAll , который мы можем использовать для удаления нескольких элементов из массива с учетом их индексов:
public int[] removeAllElementsWithGivenIndices(int[] array, int... indices) return ArrayUtils.removeAll(array, indices); >
5. Использование элемента в качестве входных данных
Или, скажем, мы не знаем индекс того, что мы удаляем. В этом случае мы можем предоставить элемент для удаления с помощью ArrayUtils#removeElement :
public int[] removeFirstOccurrenceOfGivenElement(int[] array, int element) return ArrayUtils.removeElement(array, element); >
Вот еще одна полезная вариация этого метода ArrayUtils#removeElements на случай, если мы хотим удалить более одного элемента:
public int[] removeAllGivenElements(int[] array, int... elements) return ArrayUtils.removeElements(array, elements); >
Иногда мы хотели бы удалить все вхождения данного элемента. Мы можем сделать это с помощью ArrayUtils#removeAllOccurences :
public int[] removeAllOccurrencesOfAGivenElement(int[] array, int element) return ArrayUtils.removeAllOccurences(array, element); >
6. Заключение
В этой статье мы рассмотрели различные способы удаления элемента/элементов из массива с помощью библиотеки Apache Commons Lang .
Чтобы узнать больше о пограничных случаях, ознакомьтесь с исходным кодом этого руководства и соответствующими модульными тестами, доступными на GitHub .
- 1. Обзор
- 2. Мавен
- 3. Удаление элемента
- 4. Использование индекса в качестве входных данных
- 5. Использование элемента в качестве входных данных
- 6. Заключение
Как удалить элемент из массива 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]