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=newArrayList<Integer>();numeros.add(1);numeros.add(2);numeros.add(1);//Removernumeros.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.
A
AbelBueno2 likes
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.