Konverzia medzi zoznamom a množinou v Jave
1. Prehľad
V tomto krátkom článku sa pozrieme na premena medzi a Zoznam a a Nastaviť - počnúc programom Plain Java, používaním knižnice Guava a knižnice Apache Commons Collections a nakoniec programom Java 10.
Tento článok je súčasťou série „Java - Späť na základné“ tu na Baeldungu.
2. Konvertovať Zoznam do Nastaviť
2.1. S obyčajnou Javou
Začnime s konverziou od a Zoznam do a Nastaviť pomocou Javy:
public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect () {List sourceList = Arrays.asList (0, 1, 2, 3, 4, 5); Set targetSet = new HashSet (sourceList); }
Ako vidíte, proces premeny je typovo bezpečný a priamy - pretože konštruktory každej kolekcie prijímajú ako zdroj inú kolekciu.
2.2. Ži Guava
Urobme rovnakú konverziu pomocou Guavy:
public void givenUsingGuava_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Nastaviť targetSet = Sets.newHashSet (sourceList); }
2.3. So zbierkami Apache Commons
Ďalej použijeme rozhranie Commons Collections API na prevod medzi a Zoznam a a Nastaviť:
public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Nastaviť targetSet = nový HashSet (6); CollectionUtils.addAll (targetSet, sourceList); }
2.4. S programom Java 10
Jednou z ďalších možností je použitie Set.copyOf statická továrenská metóda zavedená v prostredí Java 10:
public void givenUsingJava10_whenListConvertedToSet_thenCorrect () {List sourceList = Lists.newArrayList (0, 1, 2, 3, 4, 5); Nastaviť targetSet = Set.copyOf (sourceList); }
Upozorňujeme, že a Nastaviť takto vytvorený je nemodifikovateľný.
3. Konvertovať Nastaviť do Zoznam
3.1. S obyčajnou Javou
Teraz urobme spätnú konverziu - od a Nastaviť do a Zoznam - pomocou Javy:
public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Zoznam targetList = nový ArrayList (sourceSet); }
3.2. S Guavou
A riešenie Guava:
public void givenUsingGuava_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Zoznam targetList = Lists.newArrayList (sourceSet); }
Veľmi podobný prístupu v prostredí Java, len s o niečo menej duplikovaným kódom.
3.3. So zbierkami Apache Commons
Pozrime sa teraz na riešenie Commons Collections na prevod medzi a Nastaviť a a Zoznam:
public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); Zoznam targetList = nový ArrayList (6); CollectionUtils.addAll (targetList, sourceSet); }
3.4. S programom Java 10
Nakoniec môžeme použiť List.copyOf ktorá bola predstavená v prostredí Java 10:
public void givenUsingJava10_whenSetConvertedToList_thenCorrect () {Set sourceSet = Sets.newHashSet (0, 1, 2, 3, 4, 5); List targetList = List.copyOf (sourceSet); }
Musíme mať na pamäti, že výsledok Zoznam je neupraviteľný.
4. Záver
Implementácia všetkých týchto príkladov a útržkov kódu nájdete na GitHub - toto je projekt založený na Maven, takže by malo byť ľahké ho importovať a spustiť tak, ako je.