Upgrade to Pro — share decks privately, control downloads, hide ads and more …

StreamAPI, Lambdaと仲良くなる(202108社内勉強会)

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for shimadamiyuki shimadamiyuki
August 19, 2021
150

StreamAPI, Lambdaと仲良くなる(202108社内勉強会)

月一で実施している社内勉強会の資料です(2021.08)

Avatar for shimadamiyuki

shimadamiyuki

August 19, 2021
Tweet

More Decks by shimadamiyuki

Transcript

  1. ラムダ︖Stream API︖ u Java8でStream APIとラムダ式という機能が追加されました︕ u なんで導⼊されたの︖ 背景にあったのはマルチコアCPUが興隆したこと。 マルチコアCPUで性能を引き出すために、 もっと簡単に細かい単位でパラレル処理ができるようにするべき︕という

    流れがあったため。 →いまはパラレル処理のため、というより、便利だから使うケースが多そう。 u どういうものなの︖ Javaに関数型プログラミングの書き⽅を取り⼊れたもの。
  2. Stream APIの操作たち u ⽣成 リストや配列からStreamのインスタンスを⽣成するよ u リスト.stream()、Stream.of(配列)、Arrays.stream(配列) など u 中間操作(加⼯)

    流れてきたデータを加⼯するよ。複数の中間操作を繋げて使えるよ u filter︓データをフィルタリングする u map︓流れてきたデータに処理をする など
  3. Stream APIの操作たち u 終端操作(まとめ) 加⼯し終わったデータで終わりの処理をするよ u collect︓データを指定した形でまとめる u toList(データをListに変換する) u

    groupingBy(データをグルーピングしてMapに変換する)など u forEach︓繰り返し処理をする(それぞれのデータにアクションを⾏う) u min, max︓stream内で最⼩、最⼤のデータを取得する(返す) u count︓streamのデータの個数を取得する(返す) など
  4. ラムダ式ってなに︖ (ざっくり⾔うと)メソッドの引数などに処理をそのまま渡せる便利な書き⽅ ・(引数) -> {処理} が基本的な書き⽅ (String name) -> {

    return name.concat("さん"); } ・引数の型は省略できる。引数が1つだけの場合は()も省略できる name -> { return name.concat("さん"); } ・ラムダ式内の処理が1つだけの場合は、{}やreturnを省略できる name -> name.concat("さん");
  5. Stream APIでラムダ式を使うと便利 データを⼀つずつ処理するStream APIと、ラムダ式はとても相性がいい◦ List<String> names = Arrays.asList(”森本”, ”岸⽥”, ”⼯藤”,

    ”⽯⽥”, ”森下”, ”児⽟”, ”⼩泉”, ”村⼭”); names.stream() .map(name -> name.concat(”さん”)) .forEach(name -> System.out.println(name));