Conversion entre une liste et un ensemble en Java

1. Vue d'ensemble

Dans ce court article, nous examinerons la conversion entre une liste et un ensemble - en commençant par Plain Java, en utilisant Guava et la bibliothèque Apache Commons Collections, et enfin, avec Java 10.

Cet article fait partie de la série «Java - Back to Basic» ici sur Baeldung.

2. Convertir la liste en ensemble

2.1. Avec Plain Java

Commençons par convertir une liste en un ensemble à l' aide de Java :

public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() { List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5); Set targetSet = new HashSet(sourceList); }

Comme vous pouvez le voir, le processus de conversion est simple et sûr pour le type - puisque les constructeurs de chaque collection acceptent une autre collection comme source.

2.2. W ième Goyave

Faisons la même conversion en utilisant Guava:

public void givenUsingGuava_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Sets.newHashSet(sourceList); }

2.3. Avec les collections Apache Commons

Ensuite, utilisons l'API Commons Collections pour convertir entre une liste et un ensemble :

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. Avec Java 10

Une option supplémentaire consiste à utiliser la méthode de fabrique statique Set.copyOf introduite dans Java 10:

public void givenUsingJava10_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = Set.copyOf(sourceList); }

Notez qu'un ensemble créé de cette manière n'est pas modifiable.

3. Convertir l' ensemble en liste

3.1. Avec Plain Java

Faisons maintenant la conversion inverse - d'un ensemble à une liste - en utilisant Java :

public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(sourceSet); }

3.2. Avec goyave

Et la solution Guava:

public void givenUsingGuava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = Lists.newArrayList(sourceSet); } 

Très similaire à l'approche java, seulement avec un peu moins de code dupliqué.

3.3. Avec les collections Apache Commons

Voyons maintenant la solution Commons Collections pour convertir entre un ensemble et une liste :

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. Avec Java 10

Enfin, nous pouvons utiliser le List.copyOf qui a été introduit dans Java 10:

public void givenUsingJava10_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = List.copyOf(sourceSet); }

Nous devons garder à l'esprit qu'une liste résultante n'est pas modifiable.

4. Conclusion

L'implémentation de tous ces exemples et extraits de code peut être trouvée sur GitHub - il s'agit d'un projet basé sur Maven, il devrait donc être facile à importer et à exécuter tel quel.