Konverzia iterátora na zoznam
1. Prehľad
V tomto krátkom návode sa dozvieme, ako previesť súbor Iterátor do a Zoznam v Jave. Niekoľko príkladov si ukážeme pomocou while cyklu, Java 8 a niekoľkých bežných knižníc.
Použijeme Iterátor s Celé číslos pre všetky naše príklady:
Iterátor iterátor = Arrays.asList (1, 2, 3) .iterator ();
2. Použitie While Loop
Začnime s prístupom tradične používaným pred Java 8. Budeme previesť Iterátor do a Zoznam použitíma zatiaľ čo slučka:
List actualList = nový ArrayList (); while (iterator.hasNext ()) {actualList.add (iterator.next ()); } assertThat (actualList, containsInAnyOrder (1, 2, 3));
3. Používanie Java 8 Iterator.forEachRemaining
V prostredí Java 8 a novších môžeme používať Iterátor‘S forEachRemaining () metóda na vybudovanie našej Zoznam. Prejdeme okolo pridať () metóda Zoznam rozhranie ako referencia metódy:
List actualList = nový ArrayList (); iterator.forEachRemaining (actualList :: add); assertThat (actualList, containsInAnyOrder (1, 2, 3));
4. Používanie rozhrania Java 8 Streams API
Ďalej použijeme rozhranie Java 8 Streams API na prevod súboru Iterátor do a Zoznam. Aby bolo možné použiť Prúd API, musíme najskôr previesť Iterátor do an Iterable. Môžeme to urobiť pomocou výrazov Java 8 Lambda:
Iterable iterable = () -> iterátor;
Teraz môžeme Použi StreamSupport trieda' Prúd() a zbierať () metódy na vybudovanie Zoznam:
Zoznam actualList = StreamSupport .stream (iterable.spliterator (), false) .collect (Collectors.toList ()); assertThat (actualList, containsInAnyOrder (1, 2, 3));
5. Používanie Guavy
The Knižnica Guava od spoločnosti Google poskytuje možnosti na vytvorenie premenlivého aj nemenného Zoznams, tak uvidíme oba prístupy.
Vytvorme si najskôr nemenný Zoznam použitím ImmutableList.copyOf () metóda:
List actualList = ImmutableList.copyOf (iterátor); assertThat (actualList, containsInAnyOrder (1, 2, 3));
Teraz vytvorme premenlivú položku Zoznam použitím Lists.newArrayList () metóda:
Zoznam actualList = Lists.newArrayList (iterátor); assertThat (actualList, containsInAnyOrder (1, 2, 3));
6. Používanie Apache Commons
The Knižnica Apache Commons Collections poskytuje možnosti pre prácu na Zoznam. Použijeme IteratorUtils vykonať konverziu:
Zoznam actualList = IteratorUtils.toList (iterátor); assertThat (actualList, containsInAnyOrder (1, 2, 3));
7. Záver
V tomto článku sme sa venovali niekoľkým možnostiam prevodu súboru Iterátor do a Zoznam. Aj keď existuje niekoľko ďalších spôsobov, ako to dosiahnuť, prebrali sme niekoľko bežne používaných možností.
Implementáciu všetkých týchto príkladov a útržkov kódu nájdete na GitHub.