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:
Uma maneira simples de fazer isso seria substituir o valor armazenado emindex 2 pelo valor armazenado emindex 3 até chegarmos ao final da matriz:
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:
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.