Como remover apenas um elemento do ArrayList?

2 respostas
T

Pessoal, tenho um ArrayList que possui 3 elementos, dos quais 2 são repetidos. Desses repetidos quero remover apenas um, como posso fazer isso?

ArrayList<Integer> numeros = new ArrayList<Integer>();
numeros.add(1);
numeros.add(2);
numeros.add(1);
//Remover
numeros.remove(1); // Eu quero que sobre 1 e 2, o outro 1 tem que ser removido sem a cópia.

2 Respostas

I

Cara, existem abordagens sobre o método remove() :

  1. Remoção por index: você passa um int e ele remove o item que estiver naquela posição (baseado em zero).
  2. Remoção por objeto: você passa um objeto do tipo da lista e identifica, através do método equals() o primeiro objeto correspondente e o remove.

Se o que você quer fazer é não deixar o mesmo objeto ser adicionado mais de uma vez na sua lista, procure por HashSet. Acredito que irá lhe ajudar bastante.
Entretanto, se na verdade você quiser realmente remover o segundo “1”, eu (minha opinião), iria pelo remove(int index) e faria numeros.remove(2);.

Espero ter ajudado.

Abs.

A

O efeito que você está vendo é provavelmente a lista resultante fica [1,1]
Isso acontece pois o método remove é overloaded: ele pode receber o índice a ser excluído (tipo int) ou um objeto a ser excluído (no seu caso Integer).
Quando você escreve o número literal 1, o java vai considerar ele como um int, chamado a versao do método pelo índice.

Para remover o primeiro 1, você poderia usar:
numeros.remove(Integer.valueOf(1));

Ou, se sua intençao é ter uma coleçao de objetos sem elementos repetidos, você pode usar um Set, que faz isso para você automaticamente.

Criado 17 de outubro de 2016
Ultima resposta 17 de out. de 2016
Respostas 2
Participantes 3