Az Iterable konvertálása Java-gyűjteménybe

1. Áttekintés

Ebben az oktatóanyagban megvizsgáljuk az anvertálás különböző módjait Iterálható a Gyűjtemény Java-ban.

Kezdjük egyszerű Java megoldásokkal, majd megnézzük azokat a lehetőségeket, amelyeket a Guava és az Apache Commons könyvtárak is nyújtanak.

2. Iterálható és Iterátor

Először meghatározzuk a sajátunkat Iterálható:

Iterálható iterálható = Arrays.asList ("john", "tom", "jane");

Meghatározunk egy egyszerűt is Iterátor - az átalakítás közötti különbség kiemelésére Iterálható nak nek Gyűjtemény és Iterátor nak nek Gyűjtemény:

Iterátor iterátor = iterálható.iterátor ();

3. A Plain Java használata

3.1. Iterálható nak nek Gyűjtemény

Tudunk használja a Java 8-at az egyes() módszer az összes elem hozzáadásához a Lista:

@Test public void whenConvertIterableToListUsingJava8_thenSuccess () {List list = new ArrayList (); iterable.forEach (eredmény :: hozzáadás); assertThat (eredmény, tartalmazza ("john", "tom", "jane")); }

Vagy használja a Elosztó osztály átalakítani a mi Iterálható nak nek Folyam majd arra Gyűjtemény:

Lista eredménye = StreamSupport.stream (iterable.spliterator (), false) .collect (Collectors.toList ());

3.2. Iterátor nak nek Gyűjtemény

Másrészt ahelyett, hogy használná az egyes(), használjuk forEachRemaining () val vel Iterátor:

@Test public void whenConvertIteratorToListUsingJava8_thenSuccess () {List list = new ArrayList (); iterator.forEachRemaining (eredmény :: hozzáadás); assertThat (eredmény, tartalmazza ("john", "tom", "jane")); }

Hozhatunk létre a Elosztó tőlünk Iterátor akkor használja az átalakításhoz Iterátor nak nek Folyam:

Lista eredménye = StreamSupport.stream (Spliterators.spliteratorUnknownSize (iterator, Spliterator.ORDERED), hamis) .collect (Collectors.toList ());

3.3. For-Loop használatával

Nézzünk meg egy olyan megoldást is, amely egy nagyon egyszerű for-loop segítségével konvertálja a konvertálást Iterálható a Lista:

@Test public void whenConvertIterableToListUsingJava_thenSuccess () {List list = new ArrayList (); mert (String str: iterálható) {result.add (str); } assertThat (eredmény, tartalmazza ("john", "tom", "jane")); }

Másrészt használni fogjuk hasNext () és következő() a ... val Iterátor:

@Test public void whenConvertIteratorToListUsingJava_thenSuccess () {List list = new ArrayList (); while (iterator.hasNext ()) {result.add (iterator.next ()); } assertThat (eredmény, tartalmazza ("john", "tom", "jane")); }

4. Guava használata

Néhány olyan könyvtár is rendelkezésre áll, amelyek kényelmes módszereket kínálnak ennek eléréséhez.

Lássuk, hogyan használhatjuk a Guava-t egy an-ról konvertálásra Iterálható a Lista:

Készíthetünk újat Lista tól től Iterálható vagy Iterátor felhasználásával Lists.newArrayList ():

Lista eredménye = Lists.newArrayList (iterálható);

Vagy használhatjuk ImmutableList.copyOf ():

Lista eredménye = ImmutableList.copyOf (iterálható);

5. Az Apache Commons használata

Végül, az Apache Commons-t fogjuk használni IterableUtils létrehozni a Lista tól től Iterálható:

Lista eredménye = IterableUtils.toList (iterálható);

Hasonlóképpen fogjuk használni IteratorUtils létrehozni a Lista tőlünk Iterátor:

Lista eredménye = IteratorUtils.toList (iterator);

6. Következtetés

Ebben a rövid cikkben megtanultuk, hogyan kell konvertálni egy Iterálható és Iterátor a Gyűjtemény Java használatával. Különböző módszereket tártunk fel a sima Java, valamint két külső könyvtár használatával: a Guava és az Apache Commons.

Mint mindig, a teljes forráskód elérhető a GitHubon.