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.