Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで5

5.1.1 Stream APIでコレクションの操作はどう変わるか

  • StreamAPIは「作成」「中間操作」「終端操作」の3つの操作からできています

5.1.2 ラムダ式の書き方をマスターする

  • 関数型インターフェイスの代替として使用する
  • (引数) -> { 処理 }
  • ラムダ式の処理が1つしかない場合は、returnと、処理の {}、末尾の ; も省略できます

5.1.3 メソッド参照

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を作成する
5.6.2 Streamを用いて値の範囲からListを作成する

kameyatakefumi.hatenablog.com
kameyatakefumi.hatenablog.com