1ストリームインターフェイス
1.1インターフェースの状況
次の図に示すように、java.util.streamインターフェイスには、DoubleStream、LongStream、IntStream、およびStreamの4つのインターフェイスがあります。
1.2ストリームの分類と使用
その中で、Streamインターフェイスは多くのメソッドを定義します。これらは大きく2つのカテゴリに分類できます。
- 中級オペレーションクラス
- ターミナル操作
一般的に、ストリームの使用は次の3つに要約できます。
- クエリを実行するためのデータソース
- パイプラインのストリームを形成する中間操作チェーン
- ターミナル操作、パイプラインの実行、および結果の生成
1.3構造図
2中間操作
中間操作クラスが返すのは別のストリームです。つまり、その戻り値のタイプはStreamです。
たとえば、フィルタまたはソートされたメソッドを接続してクエリ操作を形成できます。ただし、パイプラインで端末操作がトリガーされない限り、処理は実行されません。
つまり、中間操作は、さまざまな操作を順次組み合わせたものであり、操作の対象はストリームであり、生成されるオブジェクトもさまざまなストリームであり、最終的な操作結果は、端末操作後にのみ表示できます。
フローの中間操作には、多くの場合、次のタイプがあります。
オペレーティング | の種類 | リターンタイプ | 動作パラメータ | 関数記述子 |
フィルタ | 中間操作 | ストリームT | 述語T | T->ブール値 |
地図 | 中間操作 | ストリームR | 関数T、R | T-> R |
制限 | 中間操作 | ストリームT | ||
ソート済み | 中間操作 | ストリームT | コンパレータT | (T、T)-> int |
明確な | 中間操作 | ストリームT |
3端末操作
ストリームの最終操作は、ストリームのパイプラインから結果を生成し、その結果は、リスト、整数、さらにはvoidなど、ストリームではない任意の値になります。
一般的に使用されるストリームの端末操作:
オペレーティング | の種類 | 目的 |
forEach | ターミナル操作 | ストリーム内のすべての要素を消費し、それにラムダを適用します。この操作はvoidを返します |
カウント | ターミナル操作 | ストリーム内の要素の数を返します。この操作は長く戻ります |
収集する | ターミナル操作 | ストリームをリスト、マップ、さらにはIなどのセットに減らします |