Necesito quitar los valores repetidos de un ArrayList sin utilizar otros objetos.
Tengo el siguiente código:
Código:
public static void main(String[] args){
ArrayList<String> miArrayList=new ArrayList<String>();
miArrayList.add("Uno");
miArrayList.add("Dos");
miArrayList.add("Tres");
miArrayList.add("Uno");
miArrayList.add("Cuatro");
miArrayList.add("Uno");
System.out.println("El tamaño inicial de miArrayList: "+miArrayList.size());
System.out.println("Valores Iniciales de miArrayList: ");
for (int i=0;i<miArrayList.size();i++)System.out.println("posición "+i+":"+miArrayList.get(i));
for (int i=0;i<miArrayList.size();i++)for (int j=0;j<miArrayList.size();j++){
if (miArrayList.get(i).equals(miArrayList.get(j))&&i!=j){
miArrayList.remove(i);
}
}
System.out.println("\nValores Finales de miArrayList: ");
for (int i=0;i<miArrayList.size();i++)System.out.println("posición "+i+":"+miArrayList.get(i));
}
Y funciona correctamente para valores al azar. Sin embargo, cuando resulta que absolutamente todos mis valores son el mismo valor resulta que me deja 2 valores repetidos en vez de 1 solo. (Y esto me raya mucho porque debería de llegar un momento de comparación entre esos 2 valores. ¿Por qué no llega a comparar esos 2 valores?)
Para arreglarlo, después de finalizar el for de eliminación de repetidos he incluido la siguiente línea:
Código:
if (miArrayList.size()==2)if (miArrayList.get(0).equals(miArrayList.get(1)))miArrayList.remove(1);
Pero no me parece una solución muy fina a este problema.
¿A alguien se le ocurre alguna otra solución? ¿Quizá un (mientras haya un repetido borrar repetido)?