¿Cómo puedo eliminar los elementos repetidos de ArrayList?

Tengo un `ArrayList<de cadenas<y quiero eliminar de él las cadenas repetidas. ¿Cómo puedo hacerlo?

Solución

Si no quiere duplicados en una Colección, debería considerar por qué está usando una Colección que permite duplicados. La forma más sencilla de eliminar los elementos repetidos es añadir el contenido a un Set (que no permite duplicados) y luego volver a añadir el Set a la ArrayList:

Set set = new HashSet(yourList);
yourList.clear();
yourList.addAll(set);

Por supuesto, esto destruye el orden de los elementos en la ArrayList.

Comentarios (16)

Aunque convertir el ArrayList en un HashSet elimina efectivamente los duplicados, si necesita preservar el orden de inserción, le sugiero que utilice esta variante

// list is some List of Strings
Set s = new LinkedHashSet(list);

Luego, si necesitas recuperar una referencia List, puedes utilizar de nuevo el constructor de conversión.

Comentarios (5)

Si no quiere duplicados, utilice un Set en lugar de una Lista. Para convertir una Lista en un Conjunto puede utilizar el siguiente código:

// list is some List of Strings
Set s = new HashSet(list);

Si es realmente necesario puedes utilizar la misma construcción para convertir un Set de nuevo en un List.

Comentarios (2)