Removendo um elemento de uma matriz em Java

Removendo um elemento de uma matriz em Java

1. Visão geral

Neste tutorial rápido, aprenderemos sobre as várias maneiras em que podemosremove an element from an array in Java usando a bibliotecaApache Commons Lang.

2. Maven

Vamos adicionarthe commons-lang3 dependency ao arquivopom.xml do nosso projeto:


    org.apache.commons
    commons-lang3
    3.9

3. Removendo um elemento

Antes de começarmos, vamos ver o que acontece quando removemos um elemento de um array sem usar a classeArrayUtils da biblioteca Apache Commons Lang.

Dada a matriz abaixo, vamos remover um elemento emindex 2:

image

Uma maneira simples de fazer isso seria substituir o valor armazenado emindex 2 pelo valor armazenado emindex 3 até chegarmos ao final da matriz:

image

Observe que, ao remover o elemento da maneira acima,the size of the array would remain the same e o valor armazenado no último índice ficariam vazios. Como os arrays têmfixed memory size allocated during initialization, a remoção de um elemento não ajusta o tamanho do array.

Agora vamos dar uma olhada na representação da matriz ao remover um elemento usando o métodoremove da classeArrayUtils do Apache Commons Lang:

image

Como podemos ver, o tamanho da matriz aqui é ajustado para 5 após a remoção do elemento. O métodoremove cria uma nova matriz e copia todos os valores, exceto o valor que está sendo removido.

A classeArrayUtils fornece duas maneiras de remover um elemento de uma matriz. Vamos dar uma olhada nisso a seguir.

4. Usando índice como entrada

A primeira maneira de remover um elemento é por meio de seu índice comArrayUtils#remove:

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

Outra variação é o métodoremoveAll, que podemos usar para remover vários elementos de uma matriz, dados seus índices:

public int[] removeAllElementsWithGivenIndices(int[] array, int... indices) {
    return ArrayUtils.removeAll(array, indices);
}

5. Usando elemento como entrada

Ou digamos que não sabemos o índice do que estamos removendo. Nesse caso, podemos fornecer o elemento a ser removido usandoArrayUtils#removeElement:

public int[] removeFirstOccurrenceOfGivenElement(int[] array, int element) {
    return ArrayUtils.removeElement(array, element);
}

Aqui está outra variação útil deste métodoArrayUtils#removeElements, caso haja mais de um elemento que gostaríamos de remover:

public int[] removeAllGivenElements(int[] array, int... elements) {
    return ArrayUtils.removeElements(array, elements);
}

Às vezes, queremos remover todas as ocorrências de um determinado elemento. Podemos fazer isso usandoArrayUtils#removeAllOccurences:

public int[] removeAllOccurrencesOfAGivenElement(int[] array, int element) {
    return ArrayUtils.removeAllOccurences(array, element);
}

6. Conclusão

Neste artigo, vimos as várias maneiras de remover um elemento / elementos de uma matriz usando a bibliotecaApache Commons Lang.

Para saber mais sobre os casos extremos, verifique o código-fonte deste tutorial e os testes de unidade relevantesavailable on GitHub.