Spliterator
Java 8のクラスの適切なユースケース シナリオは何ですか?
3 に答える
通常、アプリケーション開発者はSpliterator
API を直接使用しません。ただし、API を提供し、独自のコレクションのようなクラスを実装する場合は、実装Spliterator
してコレクションを API に適合させることができStream
ます。これにより、関数型アプローチ、並列処理、およびその他の機能がサポートされます。
たとえば、CIDR 表記で指定されたネットワーク内の IP アドレスを列挙するユーティリティを作成しました。それは実際にはコレクションではありません。つまり、メモリ内のすべてのアドレスのリストを一度に保持するのではなく、ネットワーク番号とネットマスクのみを保持します。しかし、 を公開することでSpliterator
、 に簡単に適応させることができますStream
。(それぞれSpliterator
が、ネットワークのシェアで現在の IP アドレスと最大アドレスを追跡するだけです。)
コア Java ランタイムのもう 1 つの例はDirectoryStream
、ファイル システムのトラバースです。
Spliterator
Iterator
オブジェクトのストリームを分割して反復することを可能にするタイムレスなクラスの拡張です(反復Stream
する前に操作を収集することによって機能します)。
平均的な開発者がいつSpliterator
. およびAPI は Java 8 で信じられないほど豊富でCollection
ありCollections
、ほとんどの場合、独自のインターフェイスCollection
を構築する代わりにバニラ サブクラスを使用する方が適切です。Stream
使用したい場合の例は、標準の/が定義されていないリンクされたデータ構造を使用するグラフSpliterator
のライブラリです。Spliterator
stream()