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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-19 03:29:021060ブラウズ

What is the Key Difference Between `map()` and `flatMap()` in Java 8 Streams?

Java 8 ストリームの map() メソッドと flatMap() メソッドの比較

Java 8 のストリームは、操作するための強力な一連の操作を提供します。 map() や flatMap() などのデータのコレクション。これらのメソッドはどちらも Stream を入力として受け取り、新しい Stream を返しますが、各入力値に対して生成される出力値の数に基づいた動作が異なります。

map()

  • 各入力値を 1 つの出力値に変換する関数を受け入れます。
  • 出力ストリームには、入力ストリームと同じ数の要素が含まれます。

flatMap()

  • 各入力値を概念的に 0 個以上の出力値のストリームに変換する関数を受け入れます。
  • 出力ストリームは「平坦化」されます。マップされたストリームからのすべての出力値を単一のストリームに収集することによって。

主な違い

  • 出力サイズ: map() は入力値ごとに 1 つの出力値を生成しますが、 flatMap() は入力値ごとに任意の数の出力値を生成します。
  • マッパー関数: map() には次の関数が必要です。 flatMap() は入力値を出力値にマップしますが、 flatMap() は入力値をストリームにマップする関数を必要とします。

ユースケース

  • map(): 単一の関数を使用して、ストリーム内の各要素を変換します。たとえば、文字列のストリームを大文字に変換します。
  • flatMap(): ストリーム内の各要素から複数の値を抽出し、その結果を単一のストリームに平坦化する必要がある場合に使用されます。 。たとえば、リストのストリームを個々の要素のストリームにフラット化します。

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

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