1. Información general
En este breve artículo, veremos la conversión entre una Lista y un Conjunto , comenzando con Plain Java, usando Guava y la biblioteca Apache Commons Collections, y finalmente, con Java 10.
Este artículo es parte de la serie "Java - Back to Basic" aquí en Baeldung.
2. Convertir lista en conjunto
2.1. Con Java simple
Comencemos con la conversión de una lista a un conjunto usando Java :
public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() { List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); Set targetSet = new HashSet(sourceList); }
Como puede ver, el proceso de conversión es sencillo y seguro, ya que los constructores de cada colección aceptan otra colección como fuente.
2.2. W ITH guayaba
Hagamos la misma conversión usando Guava:
public void givenUsingGuava_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Sets.newHashSet(sourceList); }
2.3. Con las colecciones de Apache Commons
A continuación, usemos la API de colecciones comunes para convertir entre una lista y un conjunto :
public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = new HashSet(6); CollectionUtils.addAll(targetSet, sourceList); }
2.4. Con Java 10
Una opción adicional es utilizar el método de fábrica estático Set.copyOf introducido en Java 10:
public void givenUsingJava10_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Set.copyOf(sourceList); }
Tenga en cuenta que un conjunto creado de esta manera no se puede modificar.
3. Convertir conjunto en lista
3.1. Con Java simple
Hagamos ahora la conversión inversa, de un conjunto a una lista , usando Java :
public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(sourceSet); }
3.2. Con Guayaba
Y la solución de Guayaba:
public void givenUsingGuava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = Lists.newArrayList(sourceSet); }
Muy similar al enfoque de Java, solo que con un código un poco menos duplicado.
3.3. Con las colecciones de Apache Commons
Veamos ahora la solución de Colecciones comunes para convertir entre un conjunto y una lista :
public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(6); CollectionUtils.addAll(targetList, sourceSet); }
3.4. Con Java 10
Finalmente, podemos usar List.copyOf que se ha introducido en Java 10:
public void givenUsingJava10_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = List.copyOf(sourceSet); }
Debemos tener en cuenta que una Lista resultante no se puede modificar.
4. Conclusión
La implementación de todos estos ejemplos y fragmentos de código se puede encontrar en GitHub : este es un proyecto basado en Maven, por lo que debería ser fácil de importar y ejecutar como está.