Konvertering mellem en liste og et sæt i Java

1. Oversigt

I denne korte artikel vil vi se på konverteringen mellem en Liste og en Sæt - startende med almindelig Java ved hjælp af Guava og Apache Commons Collections-biblioteket og endelig med Java 10.

Denne artikel er en del af "Java - Back to Basic" -serien her på Baeldung.

2. Konverter Liste til Sæt

2.1. Med almindelig Java

Lad os starte med at konvertere fra en Liste til en Sæt ved hjælp af Java:

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

Som du kan se, er konverteringsprocessen typesikker og ligetil - da konstruktørerne af hver samling accepterer en anden samling som kilde.

2.2. Wmed Guava

Lad os udføre den samme konvertering ved hjælp af Guava:

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

2.3. Med Apache Commons samlinger

Lad os derefter bruge Commons Collections API til at konvertere mellem en Liste og en Sæt:

offentlig ugyldighed givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Indstil targetSet = nyt HashSet (6); CollectionUtils.addAll (targetSet, sourceList); }

2.4. Med Java 10

En yderligere mulighed er at bruge Set.copyOf statisk fabriksmetode introduceret i Java 10:

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

Bemærk, at en Sæt skabt på denne måde er umodificerbar.

3. Konverter Sæt til Liste

3.1. Med almindelig Java

Lad os nu gøre den omvendte konvertering - fra en Sæt til en Liste - ved hjælp af 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:

offentlig ugyldighed givenUsingGuava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Liste targetList = Lists.newArrayList (sourceSet); } 

Meget ligner java-tilgangen, kun med lidt mindre duplikeret kode.

3.3. Med Apache Commons samlinger

Lad os nu se løsningen på Commons Collections til at konvertere mellem en Sæt og en Liste:

public void givenUsingCommonsCollections_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

Endelig kan vi bruge List.copyOf der er blevet introduceret i Java 10:

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

Vi er nødt til at huske, at et resultat Liste er umodificerbar.

4. Konklusion

Implementeringen af ​​alle disse eksempler og kodestykker kan findes på GitHub - dette er et Maven-baseret projekt, så det skal være let at importere og køre som det er.