JavaにおけるflatMapとmapの違いは何ですか?
Javaの中で、mapとflatMapはどちらもStreamインターフェースのメソッドであり、ストリーム内の要素を操作や変換するために使用されます。その違いは以下の通りです。
- mapメソッドは、ストリーム内の各要素に関数を適用し、結果を新しいストリームとしてラップするために使用されます。これは、元のストリーム内の各要素が新しい要素にマッピングされ、新しいストリームが形成されることを意味します。
例えば、整数ストリーム内の各要素に対して二乗操作を行う場合、mapメソッドを使用できます:stream.map(x -> x * x)。 - flatMapメソッド:flatMapメソッドは、ストリーム内の各要素に関数を適用して結果を新しいストリームに変換するためにも使用されます。ただし、mapとは異なり、flatMapメソッドは各要素の新しいストリームをフラット化し、すべての新しいストリームの要素を1つの新しいストリームにマージします。
例えば、文字列ストリームがあるとしましょう。各文字列には複数の単語が含まれています。それぞれの単語を抽出して個別のストリームに変換したい場合、flatMapメソッドを使用できます:stream.flatMap(str -> Arrays.stream(str.split(” “)))。
これにより、すべての単語が含まれる新しいストリームが得られます。
まとめ:
mapメソッドは各要素を新しい要素にマッピングし、それを新しいストリームにラップします。一方、flatMapメソッドは各要素を新しいストリームにマッピングし、すべての新しいストリームの要素を1つの新しいストリームにマージします。