Pretvaranje Iterable u zbirku na Javi

1. Pregled

U ovom vodiču, istražit ćemo različite načine pretvorbe Iterativ do a Kolekcija na Javi.

Započet ćemo s običnim Java rješenjima, a zatim ćemo pogledati opcije koje knjižnice Guava i Apache Commons također nude.

2. Iterativ i Iterator

Prvo ćemo definirati naš Iterativ:

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

Također ćemo definirati jednostavan Iterator - da istakne razliku između pretvaranja Iterativ do Kolekcija i Iterator do Kolekcija:

Iterator iterator = iterable.iterator ();

3. Korištenje obične Jave

3.1. Iterativ do Kolekcija

Možemo koristite Java 8 za svakoga() metoda za dodavanje svih elemenata u Popis:

@Test public void whenConvertIterableToListUsingJava8_thenSuccess () {Rezultat popisa = novi ArrayList (); iterable.forEach (rezultat :: dodaj); assertThat (rezultat, sadrži ("john", "tom", "jane")); }

Ili koristiti Spliterator razred pretvoriti naš Iterativ do Stream zatim da Kolekcija:

Rezultat popisa = StreamSupport.stream (iterable.spliterator (), false) .collect (Collectors.toList ());

3.2. Iterator do Kolekcija

S druge strane, umjesto da se koristi za svakoga(), koristit ćemo forEachRemaining () s Iterator:

@Test public void whenConvertIteratorToListUsingJava8_thenSuccess () {Rezultat popisa = novi ArrayList (); iterator.forEachRemaining (rezultat :: dodaj); assertThat (rezultat, sadrži ("john", "tom", "jane")); }

Također možemo stvoriti i Spliterator od našeg Iterator zatim ga upotrijebite za pretvorbu Iterator do Stream:

Rezultat popisa = StreamSupport.stream (Spliterators.spliteratorUnknownSize (iterator, Spliterator.ORDERED), false) .collect (Collectors.toList ());

3.3. Korištenje for-Loop

Pogledajmo i rješenje koje koristi vrlo jednostavnu for-petlju za pretvaranje našeg Iterativ do a Popis:

@Test public void whenConvertIterableToListUsingJava_thenSuccess () {Rezultat popisa = novi ArrayList (); for (String str: iterable) {result.add (str); } assertThat (rezultat, sadrži ("john", "tom", "jane")); }

S druge strane, koristit ćemo hasNext () i Sljedeći() s Iterator:

@Test public void whenConvertIteratorToListUsingJava_thenSuccess () {Rezultat popisa = novi ArrayList (); while (iterator.hasNext ()) {result.add (iterator.next ()); } assertThat (rezultat, sadrži ("john", "tom", "jane")); }

4. Korištenje Guave

Dostupno je i nekoliko knjižnica koje nude prikladne metode koje će nam pomoći da to postignemo.

Pogledajmo kako možemo koristiti Guavu za pretvorbu iz Iterativ do a Popis:

Možemo stvoriti novo Popis iz Iterativ ili Iterator koristeći Lists.newArrayList ():

Rezultat popisa = Lists.newArrayList (iterable);

Ili možemo koristiti ImmutableList.copyOf ():

Rezultat popisa = ImmutableList.copyOf (iterable);

5. Korištenje Apache Commons

Konačno, koristit ćemo Apache Commons IterableUtils stvoriti a Popis iz Iterativ:

Rezultat popisa = IterableUtils.toList (iterable);

Slično ćemo koristiti IteratorUtils stvoriti a Popis od našeg Iterator:

Rezultat popisa = IteratorUtils.toList (iterator);

6. Zaključak

U ovom kratkom članku naučili smo kako pretvoriti Iterativ i Iterator do a Kolekcija koristeći Javu. Istražili smo različite načine koristeći običnu Javu i dvije vanjske knjižnice: Guava i Apache Commons.

Kao i uvijek, puni izvorni kod dostupan je na GitHub-u.


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