(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