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.