Removendo um elemento de um ArrayList
1. Visão geral
Neste tutorial, veremos como remover elementos de umArrayList em Java usando diferentes técnicas. Dada uma lista de esportes, vamos ver como podemos nos livrar de alguns elementos da lista a seguir:
List sports = new ArrayList<>();
sports.add("Football");
sports.add("Basketball");
sports.add("Baseball");
sports.add("Boxing");
sports.add("Cycling");
2. ArrayList#remove
ArrayList tem dois métodos disponíveis para remover um elemento,passing the index of the element a ser removido oupassing the element itself a ser removido, se houver. Vamos ver os dois usos.
2.1. Remover por índice
Usandoremove passando um índice como parâmetro, podemosremove the element at the specified position na lista e deslocar quaisquer elementos subsequentes para a esquerda, subtraindo um de seus índices. Após a execução, o métodoremove retornará o elemento que foi removido:
sports.remove(1); // since index starts at 0, this will remove "Basketball"
assertEquals(4, sports.size());
assertNotEquals(sports.get(1), "Basketball");
2.2. Remover por elemento
Outra maneira éremove the first occurrence of an element from a list usando este método. Falando formalmente, estamos removendo o elemento com o índice mais baixo, se houver, caso contrário, a lista não será alterada:
sports.remove("Baseball");
assertEquals(4, sports.size());
assertFalse(sports.contains("Baseball"));
3. Removendo ao Iterar
Às vezes, queremos remover um elemento de umArrayList enquanto o estamos fazendo um loop. Devido a não gerar umConcurrentModificationException,, precisamos usar a classeIterator para fazer isso corretamente.
Vamos ver como podemosget rid of an element in a loop:
Iterator iterator = sports.iterator();
while (iterator.hasNext()) {
if (iterator.next().equals("Boxing")) {
iterator.remove();
}
}
4. ArrayList#removeIf (JDK 8+)
Se estivermos usando versõesJDK 8 or higher, podemos aproveitarArrayList#removeIf queremoves all of the elements of the ArrayList that satisfy a given predicate.
sports.removeIf(p -> p.equals("Cycling"));
assertEquals(4, sports.size());
assertFalse(sports.contains("Cycling"));
Finalmente, podemos fazerusing third party libraries like Apache Commonse, se quisermos ir mais fundo, podemos ver comoremove all specific occurrences in an efficient way.
5. Conclusão
Neste tutorial, examinamos as várias maneiras de remover elementos de um ArrayList em Java.
Como de costume, todos os exemplos usados neste tutorial sãoavailable on GitHub.