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.