Konvertere mellom en liste og et sett i Java
1. Oversikt
I denne korte artikkelen tar vi en titt på konverteringen mellom en Liste og en Sett - starter med vanlig Java, bruker Guava og Apache Commons Collections-biblioteket, og til slutt med Java 10.
Denne artikkelen er en del av "Java - Back to Basic" -serien her på Baeldung.
2. Konverter Liste til Sett
2.1. Med vanlig Java
La oss begynne med konvertering fra en Liste til en Sett bruker Java:
public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect () {List sourceList = Arrays.asList (0, 1, 2, 3, 4, 5); Sett targetSet = ny HashSet (kildeliste); }
Som du ser er konverteringsprosessen typesikker og grei - siden konstruktørene av hver samling aksepterer en annen samling som kilde.
2.2. Wmed Guava
La oss gjøre den samme konverteringen ved hjelp av Guava:
offentlig ugyldig givenUsingGuava_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Sett targetSet = Sets.newHashSet (sourceList); }
2.3. Med Apache Commons-samlinger
La oss deretter bruke Commons Collections API for å konvertere mellom en Liste og en Sett:
public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Sett targetSet = nytt HashSet (6); CollectionUtils.addAll (targetSet, sourceList); }
2.4. Med Java 10
Et ekstra alternativ er å bruke Set.copyOf statisk fabrikkmetode introdusert i Java 10:
offentlig ugyldig givenUsingJava10_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Set targetSet = Set.copyOf (sourceList); }
Merk at en Sett skapt på denne måten er umodifiserbar.
3. Konverter Sett til Liste
3.1. Med vanlig Java
La oss nå gjøre omvendt konvertering - fra en Sett til en Liste - bruker Java:
public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Liste targetList = ny ArrayList (sourceSet); }
3.2. Med Guava
Og Guava-løsningen:
public void givenUsingGuava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Liste targetList = Lists.newArrayList (sourceSet); }
Svært lik Java-tilnærmingen, bare med litt mindre duplisert kode.
3.3. Med Apache Commons-samlinger
La oss nå se Commons Collections-løsningen for å konvertere mellom en Sett og en Liste:
offentlig tomrom gittUsingCommonsCollections_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Liste targetList = ny ArrayList (6); CollectionUtils.addAll (targetList, sourceSet); }
3.4. Med Java 10
Til slutt kan vi bruke List.copyOf som er introdusert i Java 10:
offentlig tomrom givenUsingJava10_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Liste targetList = List.copyOf (sourceSet); }
Vi må huske på at et resultat Liste er umodifiserbar.
4. Konklusjon
Implementeringen av alle disse eksemplene og kodebiter kan du finne på GitHub - dette er et Maven-basert prosjekt, så det skal være enkelt å importere og kjøre som det er.