LoginSignup
5
2

More than 3 years have passed since last update.

レガシーJavaエンジニアの(ストリーム + ラムダ式)入門

Last updated at Posted at 2019-06-26

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();

おわりに

随時更新します。

5
2
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2