ホームページ  >  記事  >  Java  >  Java 8 でのストリーム処理の `map()` メソッドと ` flatMap()` メソッドの違いは何ですか?

Java 8 でのストリーム処理の `map()` メソッドと ` flatMap()` メソッドの違いは何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-17 05:02:03419ブラウズ

What is the difference between `map()` and `flatMap()` methods for stream processing in Java 8?

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 サイトの他の関連記事を参照してください。

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