Konvertera mellan en lista och en uppsättning i Java

1. Översikt

I den här korta artikeln tar vi en titt på konverteringen mellan en lista och en uppsättning - från och med Plain Java, med Guava och Apache Commons Collections-biblioteket och slutligen med Java 10.

Den här artikeln är en del av "Java - Back to Basic" -serien här på Baeldung.

2. Konvertera lista till Set

2.1. Med vanlig Java

Låt oss börja med att konvertera från en lista till en uppsättning med Java :

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

Som du kan se är konverteringsprocessen typsäker och okomplicerad - eftersom konstruktörerna för varje samling accepterar en annan samling som källa.

2.2. Med Guava

Låt oss göra samma omvandling med Guava:

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

2.3. Med Apache Commons-samlingar

Låt oss sedan använda Commons Collections API för att konvertera mellan en lista och en uppsättning :

public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() { List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5); Set targetSet = new HashSet(6); CollectionUtils.addAll(targetSet, sourceList); }

2.4. Med Java 10

Ett ytterligare alternativ är att använda den statiska fabriksmetoden Set.copyOf som introducerades i Java 10:

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

Observera att en uppsättning som skapats på detta sätt är omodifierbar.

3. Konvertera Set till List

3.1. Med vanlig Java

Låt oss nu göra omvänd konvertering - från en uppsättning till en lista - med Java :

public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(sourceSet); }

3.2. Med Guava

Och Guava-lösningen:

public void givenUsingGuava_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = Lists.newArrayList(sourceSet); } 

Mycket lik Java-metoden, bara med lite mindre duplicerad kod.

3.3. Med Apache Commons-samlingar

Låt oss nu se Commons Collections-lösningen för att konvertera mellan en uppsättning och en lista :

public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); List targetList = new ArrayList(6); CollectionUtils.addAll(targetList, sourceSet); }

3.4. Med Java 10

Slutligen kan vi använda List.copyOf som introducerats i Java 10:

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

Vi måste komma ihåg att en resulterande lista är omodifierbar.

4. Slutsats

Implementeringen av alla dessa exempel och kodavsnitt finns på GitHub - detta är ett Maven-baserat projekt, så det borde vara enkelt att importera och köra som det är.