Java8を現場で使うようになったのでストリームとラムダ式を使うようになった。
調べなくても書けるようになったものを書いていく(随時更新予定)
更新履歴
ご指摘ありがとうございます。
2019/07/19:タイトルを変更(ストリームを追加)
2019/07/19:IntStreamの説明をint型の要素をもつstreamに変更
参考
参考になったサイトがあったら追記していく。
Qiita - Java Stream APIをいまさら入門
ラムダ式概論
関数インターフェースを使う。
streamを生成して行う。
Java8から使える。
生成操作→中間操作→終端操作の順に処理する。
生成操作
理解出来たら増やしていく。
stream()
Streamを生成する。
サンプルはリストからStreamを生成。
List<String> list = Arrays.asList("hoge","fuga","poyo");
list.stream()
IntStream.range(startInclusive, endExclusive)
int型の要素をもつstreamを生成する。endExclusive
は含まない。
0~9のIntStreamを生成する。
IntStream.range(0, 10)
IntStream.rangeClosed(startInclusive, endInclusive)
int型の要素をもつstreamを生成する。こっちのendInclusive
は含む。
1~10のIntStreamを生成する。
IntStream.rangeClosed(1,10)
中間操作
理解出来たら増やしていく。
filter
条件にマッチした要素だけのstreamを新たに生成する。
偶数だけのstreamを生成。
IntStream.range(0,10).filter(i -> i % 2 == 0)
mapToObj
Objectに変換する。
サンプルは~Integer~ intをStringに変換している。
IntStream.range(0,10).mapToObj(i -> String.valueOf(i))
終端操作
forEach
ループ処理。戻り値なし。
IntStream.range(0,10).mapToObj(i -> String.valueOf(i)).forEach(System.out::println);
collect
リストやマップを作成できる。
サンプルはListを作成。
List<String> list = IntStream.range(0,10).mapToObj(i -> String.valueOf(i)).collect(Collectors.toList());
toArray
配列を作成。
String[] array = IntStream.range(0,10).mapToObj(i -> String.valueOf(i)).toArray(String[]::new);
count
要素の件数を返す。
long count = IntStream.range(0,10).mapToObj(i -> String.valueOf(i)).count();
おわりに
随時更新します。