Este tutorial rápido le mostrará cómo limpiar los elementos duplicados de una lista , primero usando Java simple, luego Guava y finalmente una solución basada en Java 8 Lambda.
Este artículo es parte de la serie " Java - Back to Basic " aquí en Baeldung.
1. Eliminación de duplicados de una lista con Java simple
La eliminación de los elementos duplicados de una lista con el marco estándar de colecciones de Java se realiza fácilmente a través de un conjunto :
public void givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() { List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0); List listWithoutDuplicates = new ArrayList( new HashSet(listWithDuplicates)); assertThat(listWithoutDuplicates, hasSize(4)); }
Como puede ver, la lista original permanece sin cambios.
2. Elimine los duplicados de una lista con Guava
También se puede hacer lo mismo con Guayaba:
public void givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect() { List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0); List listWithoutDuplicates = Lists.newArrayList(Sets.newHashSet(listWithDuplicates)); assertThat(listWithoutDuplicates, hasSize(4)); }
Y nuevamente, la lista original permanece sin cambios.
3. Elimine los duplicados de una lista con Java 8 Lambdas
Finalmente, veamos una nueva solución, usando Lambdas en Java 8; vamos a utilizar el método distinto () de la API Stream que devuelve un flujo que consta de elementos distintos según el resultado devuelto por el método equals () :
public void givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() { List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3); List listWithoutDuplicates = listWithDuplicates.stream() .distinct() .collect(Collectors.toList()); }
Y ahí lo tenemos: 3 formas rápidas de limpiar todos los elementos duplicados de una lista.
4. Conclusión
Este artículo nos demuestra lo fácil que podemos eliminar los duplicados de una lista utilizando Java simple, Google Guava y Java 8.
La implementación de todos estos ejemplos y fragmentos se puede encontrar en el proyecto GitHub. Este es un proyecto basado en Maven, por lo que debería ser fácil de importar y ejecutar.