ホームページ >Java >&#&チュートリアル >Java 8 ストリームの「map()」と「 flatMap()」の違いは何ですか?

Java 8 ストリームの「map()」と「 flatMap()」の違いは何ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-16 08:44:03916ブラウズ

What's the Difference Between `map()` and `flatMap()` in Java 8 Streams?

Java 8 の map() メソッドと flatMap() メソッド間の矛盾を理解する

Java 8 では、map() と flatMap() の両方が使用されますメソッドを Stream に適用して、Stream を返すことができます。ただし、これらのメソッドは入出力関係が異なります。

map() メソッド

map() 操作は、入力値ごとに 1 つの出力値を生成します。基本的に、入力ストリーム内の各要素に関数を適用します。この関数は入力値を受け取り、単一の結果値を生成します。

flatMap() メソッド

対照的に、 flatMap() 演算は任意の数の値を生成できます (ゼロを含む) を入力値ごとに計算します。これは、値を受け取り、任意の数の値を返す関数という引数によって有効になります。

この違いの理由は、Java メソッドは 0 または 1 つの値しか返せないためです。 flatMap() は、マッパー関数が出力としてストリームを返せるようにすることで、この制限を回避します。このストリームからの値はその後排出され、出力ストリームに渡されます。その結果、マッパー関数の値のグループ化が出力ストリーム内で区別できないため、出力は「平坦化された」とみなされます。

使用法

通常、 flatMap() は次の場合に使用されます。マッパー関数は、ゼロ値 (Stream.empty() を使用) または複数の値 (Stream.of(a, b, を使用)) を返すことを目的としています。 c))。ただし、あらゆる種類のストリームを返すことができます。

以上がJava 8 ストリームの「map()」と「 flatMap()」の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。