Iterable converteren naar collectie in Java

1. Overzicht

In deze tutorial we zullen verschillende manieren onderzoeken om een Herhaalbaar naar een Verzameling in Java.

We beginnen met eenvoudige Java-oplossingen en kijken vervolgens naar de opties die de Guava- en Apache Commons-bibliotheken ook bieden.

2. Herhaalbaar en Iterator

Eerst zullen we onze definiëren Herhaalbaar:

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

We zullen ook een eenvoudig definiëren Iterator - om het verschil tussen converteren te benadrukken Herhaalbaar naar Verzameling en Iterator naar Verzameling:

Iterator iterator = iterable.iterator ();

3. Gebruik gewoon Java

3.1. Herhaalbaar naar Verzameling

Wij kunnen gebruik de Java 8 voor elke () methode om alle elementen toe te voegen aan het Lijst:

@Test openbare leegte whenConvertIterableToListUsingJava8_thenSuccess () {Lijstresultaat = nieuwe ArrayList (); iterable.forEach (resultaat :: toevoegen); assertThat (resultaat, bevat ("john", "tom", "jane")); }

Of gebruik de Spliterator klasse om onze Herhaalbaar naar Stroom dan naar Verzameling:

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

3.2. Iterator naar Verzameling

Aan de andere kant, in plaats van te gebruiken voor elke (), zullen we gebruiken forEachRemaining () met Iterator:

@Test openbare leegte whenConvertIteratorToListUsingJava8_thenSuccess () {Lijstresultaat = nieuwe ArrayList (); iterator.forEachRemaining (resultaat :: toevoegen); assertThat (resultaat, bevat ("john", "tom", "jane")); }

We kunnen ook een Spliterator van onze Iterator gebruik het dan om te converteren Iterator naar Stroom:

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

3.3. Met behulp van een For-Loop

Laten we ook eens kijken naar een oplossing die een heel eenvoudige for-loop gebruikt om onze Herhaalbaar naar een Lijst:

@Test openbare leegte whenConvertIterableToListUsingJava_thenSuccess () {Lijstresultaat = nieuwe ArrayList (); for (String str: iterable) {result.add (str); } assertThat (resultaat, bevat ("john", "tom", "jane")); }

Aan de andere kant gebruiken we hasNext () en De volgende() met de Iterator:

@Test openbare leegte whenConvertIteratorToListUsingJava_thenSuccess () {Lijstresultaat = nieuwe ArrayList (); while (iterator.hasNext ()) {resultaat.add (iterator.next ()); } assertThat (resultaat, bevat ("john", "tom", "jane")); }

4. Guava gebruiken

Er zijn ook enkele bibliotheken beschikbaar die handige methoden bieden om ons hierbij te helpen.

Laten we eens kijken hoe we Guava kunnen gebruiken om te converteren van een Herhaalbaar naar een Lijst:

We kunnen een nieuw creëren Lijst van Herhaalbaar of Iterator gebruik makend van Lists.newArrayList ():

Lijstresultaat = Lists.newArrayList (itereerbaar);

Of we kunnen gebruiken ImmutableList.copyOf ():

Lijstresultaat = ImmutableList.copyOf (itereerbaar);

5. Apache Commons gebruiken

Tenslotte, we zullen Apache Commons gebruiken IterableUtils om een Lijst van Herhaalbaar:

Lijstresultaat = IterableUtils.toList (itereerbaar);

Evenzo gebruiken we IteratorUtils om een Lijst van onze Iterator:

Lijstresultaat = IteratorUtils.toList (iterator);

6. Conclusie

In dit korte artikel hebben we geleerd hoe we een Herhaalbaar en Iterator naar een Verzameling met behulp van Java. We hebben verschillende manieren onderzocht met behulp van gewoon Java en twee externe bibliotheken: Guava en Apache Commons.

Zoals altijd is de volledige broncode beschikbaar op GitHub.