5.1.1 Stream APIでコレクションの操作はどう変わるか
- StreamAPIは「作成」「中間操作」「終端操作」の3つの操作からできています
5.1.2 ラムダ式の書き方をマスターする
- 関数型インターフェイスの代替として使用する
- (引数) -> { 処理 }
- ラムダ式の処理が1つしかない場合は、returnと、処理の {}、末尾の ; も省略できます
5.1.3 メソッド参照
- 代入先の関数型インターフェイスの引数の数と型が一致していれば、そこにメソッドを代入できる
- インスタンスのメソッドを参照 = {インスタンス名}::{メソッド名}
- 自分自身のインスタンスのメソッドを参照 = this::{メソッド名}
- staticメソッドを参照 = {クラス名}::{メソッド名}
5.3.1 要素を置き換える中間操作
- メソッド名に「map」が入っている中間操作は、要素を置き換えることを目的としています
- flatMap 要素のStreamを結合する
5.3.2 要素を絞り込む中間操作
- filter 条件に合致した要素のみに絞り込む
- limit 指定した件数に絞り込む
- distinct ユニークな要素のみに絞り込む(重複を排除)
5.3.3 要素を並べ替える中間操作
- Comparaterは戻り値のint値によって次のように挙動が変わります
- 0より小さい値の場合 → 第一引数のオブジェクトが前方になる
- 0より大きい値の場合 → 第二引数のオブジェクトが前方になる
- 0の場合 → 並び順は変わらない
5.4.1 繰り返し処理をおこなう終端操作
- forEach このストリームの要素に対してアクションを実行する
5.4.2 結果をまとめて取り出す終端操作
- collect 要素を走査し、結果を作成する
- toList
- toSet
- joining
- groupingBy
- toArray 全要素を配列に変換する
- reduce 値を集約する
5.4.3 結果を1つだけ取り出す終端操作
- findFirst 先頭の要素を返す
- findAny いずれかの要素を返す
- min 最小の要素を返す
- max 最大の要素を返す
5.5.1 王道はmap,filter,collect
5.5.2 n回の繰り返しをするIntStream
5.5.3 ListやMapに対して効率的に処理をおこなう
- List
- removeIf 引数に与えた関数がtrueを返す要素のすべてをListから削除する
- replaceAll 引数に与えた関数を通した結果で、Listの全要素を置き換える
- Map
- compute 引数に与えた関数の結果をMapに再設定する
- computeIfPresent キーがあるときだけ、引数に与えた関数の結果をMapに再設定する
- computeIfAbsent キーがないときだけ、引数に与えた関数の結果をMapに設定する
5.6.1 Streamを用いて列挙した値からListを作成する