ウィリアムのいたずらの開発日記

ウィリアムのいたずらが、コンピューター関係について、思ったことを好き勝手に書いているブログです。

Javaのラムダ式とStream APIを聞いてきた!

2016-10-12 22:36:39 | JavaとWeb
10月12日、Java SE 8:ラムダ式 & Stream API 入門セミナーにいってきた!
その内容をメモメモ・・・




年内に資格とると、Tシャツがもらえる

●関数型インターフェースとラムダ式
・なぜラムダ式がはいったのか
JavaSE8:関数型スタイルの処理への対応
 背景:CPUアーキテクチャの変化
 マルチコア化→並列処理
 並列処理を効率化するには、関数スタイルの処理のほうが便利
  関数=入力した値に対して必ず同じ結果を返すもの
 JavaSE8:関数型インターフェースの導入
  オブジェクト指向にはなじみにくい
  でも、関数型いいよ
  関数をオブジェクトで扱う→関数型インターフェース
  →単純化できる
  パターンはjava.util.functionパッケージを使う

・関数型インターフェース
 単一のabstructメソッドを持つインターフェース(SAMインターフェース)
  staticメソッドとデフォルトメソッドはOK
   staticメソッド
   デフォルトメソッド:デフォルト実装を与える
  java.lang.ObjectのpublicメソッドもOK
 Java8の新機能
  SAM;しんぐるあぶすとらくとめそっど
   @functionalInterface をつけると、関数型と思っていることを示す
   →そうでなかったら、エラーになる

・ラムダ式の前に
 無名クラス:見通し悪い
  →ラムダ式導入

 ラムダ式
  関数型インターフェースを実装するクラスのインスタンスかを簡略化する
  ための構文
   関数型インターフェースのメソッドにフォーカスして実装を記述できる
    メソッド名は書かなくても推論できる
    変数Xはどこで宣言している 引数名

 ラムダ式は何を簡略化している?
  引数リストとメソッドを書けばOK

 →バイトコードレベルでは無名クラスとラムダ式は違う

・省略記法
  がた省略OK
  引数がない場合()
  引数1個は括弧省略可能
  1行なら中括弧も省略OK
  returnも省略OK
  ラムダ式のメソッド呼び出しは
   System.out::println
  でOK

→書き方を決めないと安定しない
 コード読みにくくなる

・汎用的な関数スタイルの操作
  基本形は5つ
  Function
  Consumer:void
  Supplier:値を返す
  Unary(ゆーなりー)Operator:演算
  pridicate:ぶーりあんで返す
 ひきすう2つの関数型bifunction

●StreamAPI
 StreamAPI
  データをパイプラインで処理するAPI
   Streamの生成
   中間操作:遅延評価
   終端操作

 Streamの作り方
  コレクションから
  配列から
  数値範囲から
  任意の要素 Stream.of

 IntStreamを使った繰り返し処理
  for文を使った繰り返し
  IntStreamを使った繰り返し
 →for文は並列処理が難しい
  並列処理は
  .parallel().forEach()とすればいい
 →100件とかならfor文のほうが早い

 中間操作のためのメソッド
  filter
  map
  flatMap
  distinct
  peek:なにもしないけど
  limit
  skipというメソッドもあるので、先頭から何個~何個というのができる

 終端操作
  forEach
  reduce 2つパターン
  collect
  min/max
  count
  以下は、ショートサーキット操作(全要素処理しないかも?)
  findFirst
  findAny
  anyMatch
  allMatch
  noneMatch

※Optionalクラス:JavaSE8から
 値がNULLかもしれないコンテナオブジェクト

・StreamAPIの例
 Personクラス:年齢50より小さい
 カンマ区切で出だす→collectでリダクション処理
 101以上200未満の要素の合計を求める:リダクション処理

 リダクション処理の考え方
 (じつは、IntStreamのmapToInt().sum()でおわる)
  IDEは型が違うことしか教えてくれない:何を変えればいいのかは教えない

・コレクションAPIのデフォルトメソッド
  removeif predicateの結果をみて、のぞく

●JavaSE8の資格のお話
 ゴールドがラムダ式つかえますか?みたいなはなし
 今35%オフで受けられる
  クレジット決済
  オラクルからチケットを買う
ジャンル:
ウェブログ
この記事についてブログを書く
この記事をはてなブックマークに追加
« Intel Edisonが入った小型の... | トップ | 「倒産した会社の社長って、... »
最近の画像もっと見る

あわせて読む