Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/04/2015, 03:30
Kritik
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 7 meses
Puntos: 31
quitar repetidos de ArrayList

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)?

Última edición por Kritik; 25/04/2015 a las 03:48