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.