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.


$config[zx-auto] not found$config[zx-overlay] not found