Bienvenido

El club del programador abre sus puertas, ya puedes ser parte de esta comunidad en constante crecimiento. Consigue tu membresía y accede al instante a tutoriales, y recursos exclusivos,realizar comentarios, foros, y mucho más... por supuesto es gratis!

Síguenos en

Facebook Twitter RSS

¿Aún no tienes cuenta?

Ya tengo una cuenta

[Snippets] – Elimina elementos duplicados en un ArrayList

Muchas veces se nos presentan situaciones en que no debemos permitir elementos duplicados en un ArrayList. Muchas son las opciones que tenemos disponible, por ejemplo, si queremos determinar si un elemento está duplicado en nuestro ArrayList, podemos construir nuestro propio método

1
2
3
4
5
6
7
8
9
10
public boolean isDuplicate(ArrayList<String> lista){

for(int i=0;i<lista.size()-1;i++){
for(int j=i+1;j<lista.size();j++){
if(lista.get(i)==lista.get(j))
return true;
}
}
return false;
}

 

Si sólo deseamos que no se incluyan elementos que estén duplicados en nuestro ArrayList, nuevamente desarrollamos un método que recubra el método add() del array.

1
2
3
4
5
public void addUnique(ArrayList<String> lista, String elemento){

if(!lista.contains(elemento))
lista.add(elemento);
}

 

Si ya poseemos el ArrayList con los valores (duplicados inclusive) y queremos eliminar los repetidos, utilizamos una ayuda de otras clases, nos referimos a la Clase HashSet. Ésta clase implementa la interface Set, que entre sus muchas ventajas (no entraremos en detalles) no nos permite valores duplicados, con la única salvedad que perderemos el orden en que fueron inicialmente añadidos al ArrayList.

1
2
3
4
5
6
7
8
public ArrayList<String> uniqueSinOrdenar(ArrayList<String> lista) {

HashSet<String> hs = new HashSet<String>();
hs.addAll(lista);
lista.clear();
lista.addAll(hs);
return lista;
}

 

Por útlimo si necesitamos preservar el orden podemos ayudarnos con otra clase, LinkedHashSet.

1
2
3
4
5
6
7
public ArrayList<String> uniqueOrdenado(ArrayList<String> lista){

Set<String> s = new LinkedHashSet<String>(lista);
lista.clear();
lista.addAll(s);
return lista;
}

Descarga el código fuente

Descargar

por en Java , Snippets el 13/01/2012 | Puedes seguir los comentarios a esta entrada a través de RSS . Puedes dejar el tuyo, o un trackback de tu propio site.
Acerca de

Ingeniero de Software, co-fundador y editor de elclubdelprogramador, se autodefine como un entusiasta de las nuevas tecnologías, tiene amplia experiencia en entornos Java, pero ha trabajado con todo, PHP, .Net, Ruby, Python, desde Sistemas de Telecomunicaciones hasta portales web.

Deja tu comentario