(Java8)FlatMap

FlatMapはなかなか理解が難しい概念でした。(わたしだけでしょうか?)
大体何に使うの?って思います。
しかし「何に使うか」を理解すると便利な機能です。

下記が理解を助けるソースです。
data.csvは行ごとに不定個数の要素を持っています。
これを一行ごとに読み込んで、ひとつのストリーム(「リスト」、というのは正しくないが)に流し込む、これがFlatMap。
他の言語では「flatten」とかいうかもしれません。

data.csv

10,11,12
20,21
30,31,32,33
40

Main.java

public class Main {

    public static void main(String[] args) {

        Path path = Paths.get("properties/data.csv");
        try (BufferedReader reader = Files.newBufferedReader(path);) {
            
            reader.lines()
                .flatMap(line -> Arrays.asList(line.split(",")).stream())
                .collect(Collectors.toList())
                .forEach(System.out::println);;
            
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
    }
}

結果

10
11
12
20
21
30
31
32
33
40