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.


$config[zx-auto] not found$config[zx-overlay] not found