
ポイントというか心にとまったことのアウトプットです。
※個人的な重要度のバイアスがかかっているので、「べつにいいかー」と思ってたりすることはメモしてません。
※手を動かして理解したことなど、間違いを含む可能性があります。
※手元の環境は断りがなければ基本はjava 7 をIntelliJ IDEA Ultimate on OSX で動かしてます。
今回はjava8の機能なので、基本的にjava8で動かしています。
「ラムダ式とストリーム処理」
Class::method
は、自分で定義した関数型インターフェース型の変数に入れることができる。メソッド単体をオブジェクトとして切り出しているイメージ。- 関数型インターフェース
@FunctionalInterface
アノテーションは書かなくても動くけど、書いた方がわかりやすそう- メソッド参照で呼びだしたいメソッドの引数と戻り値の型が同じ抽象メソッドを1つだけ宣言してあるインターフェース
- ラムダ式
- 標準関数型インターフェース
- Function, Predicate, Consumer, Supplier の違い
- かなり種類が多いが、基本的に↑の4つの考え方のうちのどれか
- 挙動パラメータ
- 個人的な「ラムダ」のイメージ。実際は↑の方の考え方の上に成り立っているものと理解しておく。
- ストリームは終端処理(
.forEach()
)時に実行される(遅延評価) - 無限ストリーム
- 中間処理や終端処理で処理を打ち切らないと処理が終わらなくなる
- ストリーム中間処理と終端処理、種類多し
- 覚え切れん。。。
- 並列ストリーム
- reduce処理、reduceメソッド、collect処理
- このあたりのところ、改めて確認した方がよさげ