Рубрики
Без рубрики

Удаление элемента из массива в Java

Удаление элемента из массива в Java не изменяет размер массива. Узнайте, почему.

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы узнаем о различных способах, с помощью которых мы можем удалить элемент из массива в Java с помощью библиотеки Apache Commons Lang .

2. Maven

Давайте добавим | commons-lang3 зависимость к вашему проекту pom.xml файл:


    org.apache.commons
    commons-lang3
    3.11

3. Удаление элемента

Прежде чем мы начнем, давайте посмотрим, что происходит, когда мы удаляем элемент из массива без использования класса ArrayUtils из библиотеки Apache Commons Lang.

Учитывая массив ниже, давайте удалим элемент в index 2 :

Простой способ сделать это-заменить значение, хранящееся в index 2 , значением, хранящимся в index 3 , пока мы не достигнем конца массива:

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

Теперь давайте рассмотрим представление массива при удалении элемента с помощью метода remove из класса ArrayUtils из Apache Commons Lang:

Как мы видим, размер массива здесь корректируется до 5 после удаления элемента. Метод remove создает совершенно новый массив и копирует все значения, кроме удаляемого значения.

Класс ArrayUtils предоставляет два способа удаления элемента из массива. Давайте посмотрим на это дальше.

4. Использование индекса в качестве входных данных

Первый способ, которым мы можем удалить элемент, – это его индекс с помощью ArrayUtils#remove :

public int[] removeAnElementWithAGivenIndex(int[] array, int index) {
      return ArrayUtils.remove(array, index);
}

Другим вариантом является метод removal , который мы можем использовать для удаления нескольких элементов из массива с учетом их индексов:

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 .