ホームページ  >  記事  >  Java  >  Java 8 の Stream.map() と Stream. flatMap() の主な違いは何ですか?

Java 8 の Stream.map() と Stream. flatMap() の主な違いは何ですか?

DDD
DDDオリジナル
2024-11-19 10:41:02854ブラウズ

Java 8 の

What's the Key Difference Between Stream.map() and Stream.flatMap() in Java 8?

Stream.map() と Stream. flatMap() の比較

Stream.map() と Stream. flatMap()は、Java 8 で一般的に使用される 2 つのメソッドで、値のストリームに対して同様の変換を実行します。ただし、値の処理方法と戻り値には根本的な違いがあります。

Stream.map()

  • 関数を受け入れるを拡張します。引数として指定します。ここで、T は入力型、R は出力型です。
  • 指定された関数を入力ストリームの各要素に適用します。
  • 変換された値を含む新しいストリームを生成します。それぞれが入力値に対応します。
  • たとえば、整数のストリームが与えられた場合、map を使用して各整数をその 2 乗に変換できます。

Stream. flatMap( )

  • 関数を受け入れます> を拡張します引数として、各入力値のストリームを返します。
  • 入力ストリームの各要素で関数を呼び出します。
  • 結果のストリームは 1 つのストリームに連結され、「フラット化されたストリーム」が作成されます。 " 出力。
  • たとえば、文字列のストリームが与えられた場合、 flatMap を使用してすべての個々の文字を単一の文字ストリームに抽出できます。

主な違い

map() と flatMap() の主な違いは、変換関数の結果をどのように処理するかにあります。

  • map() は 1 つの 変換値。
  • flatMap() は、各入力値に対して 0 個以上 の変換値を生成します。
この区別は、結果として生じるストリームの形状と内容に影響を与えます。 flatMap() はネストされたストリームの作成を可能にしますが、map() は元のストリームと同じ次元を維持します。

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

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