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.


$config[zx-auto] not found$config[zx-overlay] not found