[JAVA] [Kleine Geschichte] Stream in Iterable konvertieren

Wie macht man

Verwenden Sie als Beispiel Files # write (Path, Iterable <? Extends CharSequence> -Zeilen, OpenOption ...).

Stream<String> stream = Stream.of("foo", "bar", "baz");
Iterable<String> iterable = stream::iterator;
Files.write(Paths.get("test.txt"), iterable);

Oder

Stream<CharSequence> stream = Stream.of("foo", "bar", "baz");
Files.write(Paths.get("test.txt"), stream::iterator);

Apropos

Stream<String> stream = Stream.of("foo", "bar", "baz");
//Kompilierungsfehler
Files.write(Paths.get("test.txt"), stream::iterator);
//Es wird vorübergehen
Files.write(Paths.get("test.txt"), (Iterable<String>)stream::iterator);

Hintergrund und Notizen

Stream / BaseStream hat eine Methode namens "iterator ()", implementiert jedoch kein Iterable. Der Grund scheint zu sein, dass "Iterable # iterator ()" wiederholt aufgerufen werden kann. Iterable # iterator () gibt einen Iterator zurück. Nur das ist geschrieben, aber [BaseStream # iterator ()](https://docs.oracle.com/javase/jp/8/docs/api/java/util/stream/BaseStream.html#iterator -) Stellt eindeutig fest, dass es sich um eine Beendigungsoperation handelt, dh, dass sie nur einmal aufgerufen werden kann. Referenz: Warum ist Stream kein Iterable ?

Beachten Sie daher, dass je nach Implementierung eine Laufzeitausnahme auftreten kann, wenn Sie die mit der obigen Methode vorgenommene Konvertierung problemlos an eine Klasse übergeben, die Iterable verwendet.

Recommended Posts

[Kleine Geschichte] Stream in Iterable konvertieren
Gelernter Stream (Ich möchte List in Map <Integer, List> konvertieren)
Konvertieren Sie ein zweidimensionales Array mit der Java 8 Stream-API in das CSV-Format
Konvertieren Sie ein potenziell null-Array in einen Stream
Ich möchte Zeichen konvertieren ...
Konvertieren Sie den Zeichenfolgentyp in den Zeitstempeltyp
In Ruby Leet-Zeichenfolge konvertieren
Konvertieren Sie ein serialisierbares Objekt in Byte []
Konvertieren Sie von ○ Monaten in ○ Jahre ○ Monate
[Java] Einführung in die Stream-API
So konvertieren Sie Java Base
[Java] Konvertiert ArrayList in Array