Az Iterator konvertálása listára

1. Áttekintés

Ebben a rövid bemutatóban megtanuljuk, hogyan kell átalakítani egy Iterátor a Lista Java-ban. Néhány példát ismertetünk egy darab hurok, a Java 8 és néhány közös könyvtár használatával.

Használunk egy Iterátor val vel Egész száms minden példánkhoz:

Iterátor iterátor = Tömbök.asList (1, 2, 3) .iterátor (); 

2. A While Loop használata

Kezdjük a Java 8 előtt hagyományosan alkalmazott megközelítéssel konvertálja a Iterátor a Lista felhasználásávala míg hurok:

List actualList = new ArrayList (); while (iterator.hasNext ()) {aktuálisList.add (iterator.next ()); } assertThat (aktuális lista, tartalmazzaInAnyOrder (1, 2, 3)); 

3. A Java 8 használata Iterator.forEachRemaining

Java 8 és újabb verziókban használhatjuk a Iterátor’S forEachRemaining () módszer a mi Lista. Át fogjuk adni a add () módszere Lista interfész mint módszer referencia:

List actualList = new ArrayList (); iterator.forEachRemaining (actualList :: add); assertThat (ténylegesList, tartalmazzaInAnyOrder (1, 2, 3)); 

4. A Java 8 Streams API használata

Ezután a Java 8 Streams API-t fogjuk használni a Iterátor a Lista. A Folyam API, meg kell először konvertálja a Iterátor egy Iterálható. Ezt megtehetjük a Java 8 Lambda kifejezésekkel:

Iterálható iterálható = () -> iterátor; 

Most megtehetjük használja a StreamSupport osztály' folyam() és gyűjt() módszerek a Lista:

List actualList = StreamSupport .stream (iterable.spliterator (), false) .collect (Collectors.toList ()); assertThat (ténylegesList, tartalmazzaInAnyOrder (1, 2, 3));

5. Guava használata

A Guava könyvtár a Google-tól lehetőséget nyújt mind a változtatható, mind a megváltoztathatatlan létrehozására Listas, tehát meglátjuk mindkét megközelítést.

Először hozzunk létre egy változhatatlant Lista felhasználásával ImmutableList.copyOf () módszer:

List actualList = ImmutableList.copyOf (iterátor); assertThat (ténylegesList, tartalmazzaInAnyOrder (1, 2, 3));

Most hozzunk létre egy módosíthatót Lista felhasználásával Lists.newArrayList () módszer:

List actualList = Lists.newArrayList (iterátor); assertThat (ténylegesList, tartalmazzaInAnyOrder (1, 2, 3));

6. Az Apache Commons használata

A Az Apache Commons Gyűjtemények könyvtár lehetőséget nyújt a Lista. Majd használjuk IteratorUtils az átalakítás elvégzéséhez:

List actualList = IteratorUtils.toList (iterator); assertThat (ténylegesList, tartalmazzaInAnyOrder (1, 2, 3));

7. Következtetés

Ebben a cikkben bemutattunk néhány lehetőséget az Iterátor a Lista. Bár van néhány más módszer ennek elérésére, több általánosan használt lehetőségre is kitértünk.

Ezen példák és kódrészletek megvalósítása megtalálható a GitHub-on.