私はBufferedReader
lines()
メソッドがSpliterator<T>
の代わりにIterator<T>
インターフェイスの実装でStream<T>
のインスタンスを作成することに驚きました。多くの理由から、たとえ並列性がなくても、Spliterator<T>
を使用するといくつかの利点があります。例えば、質問Iterator versus Stream of Java 8からBrian Goetz states in its answer:なぜBufferedReader :: lines()は、Spliterator <T>ではなく、<T>のイテレータ<T>を作成しますか?
Spliterator
でも順次、Iterator
より根本的に低く要素ごとのアクセスコストを持っています。
は、なぜBufferedReader::lines()
はIterator<T>
代わりのSpliterator<T>
てStream<T>
を作成しますか?
人はよく知っているものを使います。 JRE開発者が異なる必要がある理由はありません。 – Holger
IMHO新しいJDK8 APIに密接に関連する新機能、特に 'Stream'を開発しているJRE開発者は、これを認識する必要があります。 –
これは私の心にもつながっています。特に、最近のJava 9の新しい方法については、Spliteratorの利点が広く知られるようになりました。それでも、私はあまりにも速く判断しないように最善を尽くしています。私たちは、特定の開発者がそのような方法を実装した日を処理しなければならない作業量について知りません... – Holger