操作の流れモデルは、ここでは、非常に豊富であるいくつかの一般的なAPIです。これらの方法は二つに分けることができます。
-
遅延方法
戻り値の型はまだ、従って連鎖をサポート呼び出しメソッドのストリームインターフェース自身タイプ。(方法の終わりに加えて、他の方法が遅延されます。)
- 終了方法
戻り値の型は、もはやありませんストリームインターフェイスメソッドの独自のタイプはサポートされなくなりました同様のチェーン呼び出しのStringBuilderの種類。終了方法は、ここに提示したカウントとのforEachメソッドを。
1によって処理された1:forEachの
メソッドが呼び出さが「ため、各」異なるニックネームのforEachが、しかし、forループ。
空のforEach(消費者<?スーパーアクションT>);
この方法は、受信した消費者インタフェース機能を、各ストリームは、プロセスに要素を機能します。
java.util.function.Consumer <T> インターフェイスは、消費者インターフェースです。
消費者インターフェースが抽象メソッドボイド(T tを)受け入れる含む、消費データは汎用として指定されることを意図しています。
基本的な使用:
輸入java.util.stream.Stream; パブリック クラスDemo06ForEach { 公共 静的 ボイドメイン(文字列[]引数){ ストリームの<string>ストリーム= Stream.of( "ジャワ"、 "C"、 "パイソン"、 "Hadoopの"、 "スパーク" )。 stream.forEach(名 - > のSystem.out.println(名)); } }
ここで()メソッド、メソッドシグネチャの呼び出し:
@SafeVarargs パブリック 静的 <T>ストリーム<T> (T ...値){の 戻りArrays.stream(値)。 }
フィルタ:フィルタ
別のストリームへのストリームのサブセットにフィルタ方法。メソッドのシグネチャ:
ストリーム<T>フィルタ(述語<?スーパー述語T>);
インタフェースは、受信述語機能インタフェースパラメータを(又は方法基準ラムダであってもよい)フィルタ条件として。
java.util.stream.Predicateインターフェースがある唯一の抽象メソッドであるファンクションインタフェース、:
ブーリアンテスト(T tの);
この方法は、指定された条件に代わって、ブール結果を生成します満足しています。結果が真である場合には、ストリームフローフィルタ方法は、要素を保持し、結果が偽である場合には、フィルタ要素法は破棄されます。
基本的な使用
流れストリームと実質的方法を使用してコードフィルタの:
輸入java.util.stream.Stream; パブリック クラスDemo07StreamFilter { 公共 静的 ボイドメイン(文字列[]引数){ ストリームの<string>オリジナル= Stream.of( "ジャワ"、 "C"、 "パイソン"、 "Hadoopの"、 "スパーク" )。 ストリームの<string>結果= original.filter(S - > s.length()> = 5 )。 result.forEach(のSystem.out ::のprintln)。 } }
プログラム、コンソール出力を実行します。
パイソン
のHadoop
スパーク
この例では、ラムダ式は、フィルタリング条件を指定する:文字列の長さが5以上です。
マップ:マップ
所望であれば、別の要素にマッピングされた流れを使用することができる地図方法。メソッドのシグネチャ:
<R>ストリーム<R>マップ(関数<?スーパー?Tは、延びマッパーR>)。
インタフェースは必要タイプTは別のストリームRタイプに現在のデータ・ストリームに変換することができ、関数パラメータインタフェース機能。
java.util.stream.Functionインターフェイスはある唯一の抽象メソッドであるファンクションインタフェース、:
Rは、(T tを)適用します。
これは、T-Rタイプのタイプに変換し、この変換動作と呼ばれることができる「マッピング」。
基本的な使用
流れストリームと実質的方法を使用してコードマップの:
輸入java.util.stream.Stream; パブリック クラスDemo08StreamMap { 公共 静的 ボイドメイン(文字列[]引数){ ストリームの<string>オリジナル= Stream.of( "100"、 "200"、 "300" )。 ストリーム <整数>結果= original.map(STR - > Integer.parseInt(STR))。 result.forEach(のSystem.out ::のprintln)。 } }
プログラム、コンソール出力を実行します。
100 200 300
このコードでは、文字列を変換する方法を参照することによって、パラメータマップ法は、int型(との自動包装なるのIntegerクラスオブジェクト)。この方法は、ストリームのforeachインターフェース、一つの出力のいずれかを呼び出します。
統計番号:数
古いコレクションとしての間でコレクションサイズメソッドストリームとして提供し、それらの数をカウントする方法の要素のカウント数を:
長い数();
この方法は、(古いint値として設定されていない)の要素の数を表すlong値を返します。
基本的な使用
輸入java.util.stream.Stream; パブリック クラスDemo09StreamCount { 公共 静的 ボイドメイン(文字列[]引数){ ストリームの<string>オリジナル= Stream.of( "ジャワ"、 "C"、 "パイソン"、 "Hadoopの"、 "スパーク" )。 ストリームの<string>結果= original.filter(S - > s.length()> = 5 )。 System.out.println(result.count())。 } }
プログラム、コンソール出力を実行します。
3
最初のいくつかのアクセス:制限
この方法は、対流制限、アクセスのみ最初のnを取ることができます。メソッドのシグネチャ:
ストリーム<T>限界(長い maxSizeの)。
長さは、それが切り捨てられたパラメータの現在の設定よりも大きい場合には、長いタイプパラメータである、そうでなければ、何も動作は行われません。
基本的な使用
輸入java.util.stream.Stream; パブリック クラスDemo10StreamLimit { 公共 静的 ボイドメイン(文字列[]引数){ ストリームの<string>オリジナル= Stream.of( "ジャワ"、 "C"、 "パイソン"、 "Hadoopの"、 "スパーク" )。 ストリームの<string>結果= original.limit(3 )。 result.forEach(のSystem.out ::のprintln)。 } }
プログラム、コンソール出力を実行します。
Javaの
C
のPython
最初のいくつかをスキップ:スキップ
あなたが最初の数の要素をスキップしたい場合は、することができます後に撮影されたストリームを取得するための新しい方法をスキップ:
ストリーム<T>(スキップ長い N)
流れは前にn個の現在の長さよりも大きく、nはスキップされた場合、それ以外の場合は0、ブランクフローの長さであろう。
基本的な使用
輸入java.util.stream.Stream; パブリック クラスDemo11StreamSkip { 公共 静的 ボイドメイン(文字列[]引数){ ストリームの<string>オリジナル= Stream.of( "ジャワ"、 "C"、 "パイソン"、 "Hadoopの"、 "スパーク" )。 ストリームの<string>結果= original.skip(3 )。 result.forEach(のSystem.out ::のprintln)。 } }
プログラム、コンソール出力を実行します。
Hadoop
スパーク
コンビネーション:連結
そこに二つの流れが、あるストリームにマージしたい場合は、使用することができ、静的メソッドインタフェースストリームを連結:
静的 <T>ストリーム<T> CONCAT(ストリーム<?延び T>、ストリーム<?延び T> B)
注:これは、静的メソッド、および異なるjava.lang.Stringで連結する方法です。
基本的な使用
輸入java.util.stream.Stream; パブリック クラスDemo12StreamConcat { 公共 静的 ボイドメイン(文字列[]引数){ ストリームの<string> original1 = Stream.of( "ジャワ"、 "C"、 "パイソン" )。 ストリームの<string> original2 = Stream.of( "Hadoopの"、 "スパーク" )。 ストリームの<string>結果= Stream.concat(original1、original2)。 result.forEach(のSystem.out ::のprintln)。 } }
プログラム、コンソール出力を実行します。
Javaの
C
のPython
のHadoop
スパーク
ストリームインタフェース一般的に使用される方法は理解深めるために、見ることができ、ここで説明する運動の流れを完了するための簡単な方法を。