map() メソッドと flatMap() メソッドを使用したストリーム処理
Java 8 では、Stream インターフェースはデータのストリームを処理するための 2 つのメソッドを提供します:map() と flatMap()。どちらのメソッドも関数を引数として受け取り、新しいストリームを生成しますが、各要素に関数を適用した結果を処理する方法が異なります。
map() メソッド
map() メソッドは、指定された関数を入力ストリームの各要素に適用し、結果の新しいストリームを生成します。たとえば、次のコード スニペットは、map() を使用してリスト内の各整数値を 2 倍にします:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream() .map(i -> i * 2) .forEach(System.out::println);
このコードの出力は次のようになります:
2 4 6 8 10
flatMap() メソッド
flatMap() メソッドも、指定された関数を入力ストリームの各要素に適用しますが、新しい結果ストリームは生成されません。代わりに、関数を各要素に適用した結果を単一のストリームに結合します。
たとえば、次のコード スニペットは flatMap() を使用して、文字列のリスト内の個々の文字を新しいストリームに連結します。
List<String> words = Arrays.asList("hello", "world", "java"); words.stream() .flatMap(word -> Arrays.stream(word.split(""))) .forEach(System.out::println);
このコードの出力は次のようになります。
h e l l o w o r l d j a v a
主な違い
map() と flatMap( ) は、map() が新しい値のストリームを生成するのに対し、 flatMap() は各要素に関数を適用した結果を結合した平坦化されたストリームを生成するということです。
以上がJava 8 でのストリーム処理の `map()` メソッドと ` flatMap()` メソッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。