javaのflatMapメソッドは何に使われますか
Javaにおける一般的な関数型プログラミング操作であるflatMapは、ネストしたコレクション構造(多次元配列やネストしたリストなど)を1つのフラットなコレクションに変換するために使用されます。
具体的には、flatMapは、元の集合の各要素を新しい集合に変換する関数を受け取り、これらの新しい集合を単一のフラットな集合にまとめます。この操作により、集合の次元を減らし、複数のネストした層の要素を単一層の集合に展開できます。
以下に、flatMapを使用するサンプルコードを示します。
List<List<Integer>> nestedList = Arrays.asList(
Arrays.asList(1, 2, 3),
Arrays.asList(4, 5, 6),
Arrays.asList(7, 8, 9)
);
List<Integer> flatList = nestedList.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
System.out.println(flatList); // 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9]
上で示したコードでは、nestedListは複数のネストしたリストを含むコレクションです。flatMapオペレーションを使うことで、このネストした構造を扁平なコレクションflatListに変換できます。flatMap(List::stream)は各ネストしたリストをストリームに変換し、それらのストリームを1つのストリームとしてマージし、最終的にcollect(Collectors.toList())を使ってストリームをリストとして収集します。
つまりflatMapは、入れ子の集合構造をフラットな集合構造に変換して、集合操作のロジックを単純化するのに役立ちます。