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.
Cara, existem abordagens sobre o método remove()
:
- Remoção por index: você passa um int e ele remove o item que estiver naquela posição (baseado em zero).
- 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.
1 curtida
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.
2 curtidas