Konverzia Iterable na Collection v Jave

1. Prehľad

V tomto návode preskúmame rôzne spôsoby prevodu súboru Iterable do a Zbierka v Jave.

Začneme jednoduchými riešeniami Java, potom sa pozrieme na možnosti, ktoré poskytujú aj knižnice Guava a Apache Commons.

2. Iterable a Iterátor

Najskôr si zadefinujeme naše Iterable:

Iterable iterable = Arrays.asList ("john", "tom", "jane");

Definujeme tiež jednoduchý Iterátor - zvýrazniť rozdiel medzi prevádzaním Iterable do Zbierka a Iterátor do Zbierka:

Iterátor iterátor = iterable.iterator ();

3. Používanie obyčajnej Javy

3.1. Iterable do Zbierka

Môžeme používať Java 8 pre každý() metóda na pridanie všetkých prvkov do súboru Zoznam:

@Test public void whenConvertIterableToListUsingJava8_thenSuccess () {Výsledok zoznamu = nový ArrayList (); iterable.forEach (result :: add); assertThat (result, contains ("john", "tom", "jane")); }

Alebo Použi Splitterator triedy previesť naše Iterable do Prúd potom do Zbierka:

Výsledok zoznamu = StreamSupport.stream (iterable.spliterator (), false) .collect (Collectors.toList ());

3.2. Iterátor do Zbierka

Na druhej strane namiesto použitia pre každý(), použijeme forEachRemaining () s Iterátor:

@Test public void whenConvertIteratorToListUsingJava8_thenSuccess () {Výsledok zoznamu = nový ArrayList (); iterator.forEachRemaining (result :: add); assertThat (result, contains ("john", "tom", "jane")); }

Môžeme tiež vytvoriť a Splitterator z našej Iterátor potom ho použite na prevod Iterátor do Prúd:

Výsledok zoznamu = StreamSupport.stream (Spliterators.spliteratorUnknownSize (iterátor, Spliterator.ORDERED), false) .collect (Collectors.toList ());

3.3. Používanie slučky For-Loop

Poďme sa tiež pozrieť na riešenie, ktoré využíva na konverziu veľmi jednoduchý cyklus for-loop Iterable do a Zoznam:

@Test public void whenConvertIterableToListUsingJava_thenSuccess () {Výsledok zoznamu = nový ArrayList (); for (String str: iterable) {result.add (str); } assertThat (vysledok, obsahuje ("john", "tom", "jane")); }

Na druhej strane použijeme hasNext () a Ďalšie() s Iterátor:

@ Test public void whenConvertIteratorToListUsingJava_thenSuccess () {Výsledok zoznamu = nový ArrayList (); while (iterator.hasNext ()) {result.add (iterator.next ()); } assertThat (výsledok, obsahuje ("john", "tom", "jane")); }

4. Používanie guavy

K dispozícii je tiež niekoľko knižníc, ktoré poskytujú pohodlné metódy, ktoré nám to pomôžu dosiahnuť.

Pozrime sa, ako môžeme použiť Guava na prevod z formátu Iterable do a Zoznam:

Môžeme vytvoriť nový Zoznam od Iterable alebo Iterátor použitím Lists.newArrayList ():

Výsledok zoznamu = Lists.newArrayList (iterovateľný);

Alebo môžeme použiť ImmutableList.copyOf ():

Výsledok zoznamu = ImmutableList.copyOf (iterable);

5. Používanie Apache Commons

Nakoniec použijeme Apache Commons IterableUtils vytvoriť Zoznam od Iterable:

Výsledok zoznamu = IterableUtils.toList (iterovateľný);

Podobne použijeme IteratorUtils vytvoriť Zoznam z našej Iterátor:

Výsledok zoznamu = IteratorUtils.toList (iterátor);

6. Záver

V tomto krátkom článku sme sa dozvedeli, ako previesť súbor Iterable a Iterátor do a Zbierka pomocou Javy. Preskúmali sme rôzne spôsoby použitia obyčajnej Javy a dvoch externých knižníc: Guava a Apache Commons.

Celý zdrojový kód je ako vždy k dispozícii na serveri GitHub.


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