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.