Tengo el siguiente código:
Código:
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?)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)); }
Para arreglarlo, después de finalizar el for de eliminación de repetidos he incluido la siguiente línea:
Código:
Pero no me parece una solución muy fina a este problema.if (miArrayList.size()==2)if (miArrayList.get(0).equals(miArrayList.get(1)))miArrayList.remove(1);
¿A alguien se le ocurre alguna otra solución? ¿Quizá un (mientras haya un repetido borrar repetido)?