Iterierbar für Stream in Java

Iterierbar zum Streaming in Java

1. Überblick

In diesem kurzen Tutorial konvertieren wir ein JavaIterable-Objekt in einStream und führen einige Standardoperationen damit aus.

2. Konvertieren vonIterable inStream

DieIterable-Schnittstelle wurde unter Berücksichtigung der Allgemeinheit entwickelt und bietet keine eigenestream()-Methode.

Einfach ausgedrückt, können Sie es an die MethodeStreamSupport.stream()übergeben und von der angegebenen InstanzIterableeinStreamerhalten.

Betrachten wir die Instanz vonIterable:

Iterable iterable
  = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");

Und so können wir dieseIterable-Instanz inStream: konvertieren

StreamSupport.stream(iterable.spliterator(), false);

Beachten Sie, dass der zweite Parameter inStreamSupport.stream() bestimmt, ob die resultierendenStream parallel oder sequentiell sein sollen. Sie sollten es für paralleleStream auf true setzen.

Testen wir nun unsere Implementierung:

@Test
public void givenIterable_whenConvertedToStream_thenNotNull() {
    Iterable iterable
      = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");

    Assert.assertNotNull(StreamSupport.stream(iterable.spliterator(), false));
}

Außerdem eine kurze Randnotiz: Streams können nicht wiederverwendet werden, währendIterable ist. Es bietet auch einespliterator()-Methode, die einjava.lang.Spliterator instance über die durch die angegebenenIterable beschriebenen Elemente zurückgibt.

3. Stream Operation ausführen

Führen wir eine einfache Stream-Operation aus:

@Test
public void whenConvertedToList_thenCorrect() {
    Iterable iterable
      = Arrays.asList("Testing", "Iterable", "conversion", "to", "Stream");

    List result = StreamSupport.stream(iterable.spliterator(), false)
      .map(String::toUpperCase)
      .collect(Collectors.toList());

    assertThat(
      result, contains("TESTING", "ITERABLE", "CONVERSION", "TO", "STREAM"));
}

4. Fazit

Dieses einfache Tutorial zeigt, wie Sie eineIterable-Instanz in eineStream-Instanz konvertieren und Standardoperationen ausführen können, genau wie Sie es für jede andereCollection-Instanz getan hätten.

Die Implementierung aller Codefragmente finden Sie inGithub project.