Konvertálás lista és halmaz között Java-ban

1. Áttekintés

Ebben a rövid cikkben megnézzük közötti konverzió a Lista és a Készlet - kezdve a Plain Java-val, a Guava és az Apache Commons Collections könyvtár használatával, végül pedig a Java 10-tel.

Ez a cikk a „Java - Vissza az alapokhoz” sorozat része, itt, Baeldungon.

2. Konvertálás Lista nak nek Készlet

2.1. Sima Java-val

Kezdjük az átalakítással a-tól Lista a Készlet Java használatával:

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

Mint láthatja, az átalakítási folyamat típusbiztonságos és egyszerű - mivel az egyes gyűjtemények kivitelezői egy másik gyűjteményt fogadnak el forrásként.

2.2. WGuava

Végezzük el ugyanazt az átalakítást Guava használatával:

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

2.3. Apache Commons gyűjteményekkel

Ezután használjuk a Commons Collections API-t a Lista és a Készlet:

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

2.4. Java 10-el

Egy további lehetőség a Set.copyOf a Java 10-ben bevezetett statikus gyári módszer:

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

Vegye figyelembe, hogy a Készlet így létrehozva nem módosítható.

3. Konvertálás Készlet nak nek Lista

3.1. Sima Java-val

Most végezzük a fordított konverziót - a-tól Készlet a Lista - Java használatával:

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

3.2. Guavával

És a guavai megoldás:

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

Nagyon hasonlít a java megközelítéshez, csak egy kicsit kevesebb duplikált kóddal.

3.3. Apache Commons gyűjteményekkel

Lássuk most a Commons Collections megoldást a Készlet és a 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. Java 10-el

Végül használhatjuk a List.copyOf amit a Java 10-ben vezettek be:

public void givenUsingJava10_whenSetConvertedToList_thenCorrect () {Set sourceSet = Beállítások.newHashSet (0, 1, 2, 3, 4, 5); List targetList = List.copyOf (sourceSet); }

Nem szabad megfeledkeznünk arról, hogy az eredmény Lista módosíthatatlan.

4. Következtetés

Mindezen példák és kódrészletek megvalósítása megtalálható a GitHubon - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.