Converteren tussen een lijst en een set in Java

1. Overzicht

In dit korte artikel zullen we er naar kijken de conversie tussen een Lijst en een Set - beginnend met Plain Java, met behulp van Guava en de Apache Commons Collections-bibliotheek, en tenslotte met Java 10.

Dit artikel maakt deel uit van de serie "Java - Back to Basic" hier op Baeldung.

2. Converteren Lijst naar Set

2.1. Met gewoon Java

Laten we beginnen met converteren van een Lijst naar een Set met behulp van Java:

openbare ongeldige gegevenUsingCoreJava_whenListConvertedToSet_thenCorrect () {List sourceList = Arrays.asList (0, 1, 2, 3, 4, 5); Set targetSet = nieuwe HashSet (sourceList); }

Zoals u kunt zien, is het conversieproces typeveilig en ongecompliceerd - aangezien de constructeurs van elke verzameling een andere verzameling als bron accepteren.

2.2. W.et Guava

Laten we dezelfde conversie uitvoeren met Guava:

openbare ongeldige gegevenUsingGuava_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Stel targetSet = Sets.newHashSet (sourceList); }

2.3. Met Apache Commons-collecties

Laten we vervolgens de Commons Collections API gebruiken om te converteren tussen een Lijst en een Set:

openbare ongeldige gegevenUsingCommonsCollections_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Set targetSet = nieuwe HashSet (6); CollectionUtils.addAll (targetSet, sourceList); }

2.4. Met Java 10

Een extra optie is om de Set.copyOf statische fabrieksmethode geïntroduceerd in Java 10:

openbare ongeldige gegevenUsingJava10_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Stel targetSet = Set.copyOf (sourceList); }

Merk op dat een Set die op deze manier is gemaakt, kan niet worden gewijzigd.

3. Omzetten Set naar Lijst

3.1. Met gewoon Java

Laten we nu de omgekeerde conversie uitvoeren - van een Set naar een Lijst - met behulp van Java:

openbare ongeldige gegevenUsingCoreJava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); List targetList = nieuwe ArrayList (sourceSet); }

3.2. Met Guava

En de Guava-oplossing:

openbare ongeldige gegevenUsingGuava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Lijst targetList = Lists.newArrayList (sourceSet); } 

Zeer vergelijkbaar met de Java-benadering, alleen met iets minder gedupliceerde code.

3.3. Met Apache Commons-collecties

Laten we nu eens kijken naar de Commons Collections-oplossing om te converteren tussen een Set en een Lijst:

openbare ongeldige gegevenUsingCommonsCollections_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); List targetList = nieuwe ArrayList (6); CollectionUtils.addAll (targetList, sourceSet); }

3.4. Met Java 10

Ten slotte kunnen we de List.copyOf dat is geïntroduceerd in Java 10:

openbare ongeldige gegevenUsingJava10_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Lijst targetList = List.copyOf (sourceSet); }

We moeten in gedachten houden dat een resultaat Lijst is niet te wijzigen.

4. Conclusie

De implementatie van al deze voorbeelden en codefragmenten is te vinden op GitHub - dit is een op Maven gebaseerd project, dus het zou gemakkelijk moeten kunnen worden geïmporteerd en uitgevoerd zoals het is.