ホームページ >Java >&#&チュートリアル >Java 8 ストリームの「map()」と「 flatMap()」の違いは何ですか?
Java 8 の map() メソッドと flatMap() メソッド間の矛盾を理解する
Java 8 では、map() と flatMap() の両方が使用されますメソッドを Stream
map() メソッド
map() 操作は、入力値ごとに 1 つの出力値を生成します。基本的に、入力ストリーム内の各要素に関数を適用します。この関数は入力値を受け取り、単一の結果値を生成します。
flatMap() メソッド
対照的に、 flatMap() 演算は任意の数の値を生成できます (ゼロを含む) を入力値ごとに計算します。これは、値を受け取り、任意の数の値を返す関数という引数によって有効になります。
この違いの理由は、Java メソッドは 0 または 1 つの値しか返せないためです。 flatMap() は、マッパー関数が出力としてストリームを返せるようにすることで、この制限を回避します。このストリームからの値はその後排出され、出力ストリームに渡されます。その結果、マッパー関数の値のグループ化が出力ストリーム内で区別できないため、出力は「平坦化された」とみなされます。
使用法
通常、 flatMap() は次の場合に使用されます。マッパー関数は、ゼロ値 (Stream.empty() を使用) または複数の値 (Stream.of(a, b, を使用)) を返すことを目的としています。 c))。ただし、あらゆる種類のストリームを返すことができます。
以上がJava 8 ストリームの「map()」と「 flatMap()」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。