Removendo um elemento de um ArrayList

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.