magazine.gifJavaによる関数型プログラミング

日本語版まえがき
まえがき
はじめに

1章 Hello、ラムダ式!

  • 1.1 考え方を変える
  • 1.2 関数型のコードによる大きな利益
  • 1.3 なぜ関数型で記述するのか
  • 1.4 革命ではなく、進化
  • 1.5 簡単にするためのほんの少しの砂糖
  • 1.6 まとめ

2章 コレクションの使用

  • 2.1 リストをイテレート
  • 2.2 リストの変換
  • 2.3 要素の検索
  • 2.4 ラムダ式の再利用
  • 2.5 静的スコープとクロージャ
  • 2.6 要素を 1つ選択
  • 2.7 コレクションを単一の値に集約(reduce)
  • 2.8 要素の結合
  • 2.9 まとめ

3章 文字列、コンパレータ、フィルタ

  • 3.1 文字列のイテレーション
  • 3.2 Comparatorインタフェースを実装
  • 3.3 複数のプロパティによる流暢な比較
  • 3.4 collectメソッドとCollectorsクラスの使用
  • 3.5 ディレクトリの全ファイルをリスト
  • 3.6 ディレクトリの特定のファイルだけをリスト
  • 3.7 flatMapで直下のサブディレクトリをリスト
  • 3.8 ファイルの変更を監視
  • 3.9 まとめ

4章 ラムダ式で設計する

  • 4.1 ラムダ式を使った関心の分離
  • 4.2 ラムダ式を使った委譲
  • 4.3 ラムダ式を使ったデコレーション
  • 4.4 defaultメソッドを覗く
  • 4.5 ラムダ式を使った流暢なインタフェース
  • 4.6 例外処理
  • 4.7 まとめ

5章 外部リソースを扱う

  • 5.1 リソースの解放
  • 5.2 ラムダ式でリソース解放
  • 5.3 ロックの管理
  • 5.4 簡潔な例外テストの生成
  • 5.5 まとめ

6章 「遅延させる」ということ

  • 6.1 初期化の遅延
  • 6.2 遅延評価
  • 6.3 Streamの遅延処理を活用
  • 6.4 無限の「遅い」コレクションを生成
  • 6.5 まとめ

7章 再帰の最適化

  • 7.1 末尾呼び出し最適化を使う
  • 7.2 メモ化でスピードアップ
  • 7.3 まとめ

8章 ラムダ式で合成

  • 8.1 関数合成の利用
  • 8.2 MapReduceの使用
  • 8.3 並列化への飛躍
  • 8.4 まとめ

9章 すべてをまとめて

  • 9.1 関数型スタイルで成功するために実践すべきこと
  • 9.2 パフォーマンスの問題
  • 9.3 関数型スタイルを採用

付録A 基本的な関数型インタフェース

  • A.1 Consumer
  • A.2 Supplier
  • A.3 Predicate
  • A.4 Function

付録B 構文の基礎

  • B.1 関数型インタフェースの定義
  • B.2 パラメータを持たないラムダ式の生成
  • B.3 パラメータ 1つのラムダ式の生成
  • B.4 ラムダ式のパラメータ型を推論する
  • B.5 パラメータ 1つのラムダ式では括弧を省略可能
  • B.6 複数パラメータを持つラムダ式の生成
  • B.7 複数の型のパラメータを持つメソッドを呼び出す
  • B.8 ラムダ式を変数に格納
  • B.9 複数行のラムダ式を生成
  • B.10 ラムダ式を返す
  • B.11 ラムダ式からラムダ式を返す
  • B.12 クロージャにおける静的スコープ
  • B.13 インスタンスメソッドのメソッド参照を渡す
  • B.14 メソッド参照をstaticメソッドに渡す
  • B.15 メソッド参照を他のインスタンスのメソッドに渡す
  • B.16 複数の引数を取るメソッドの参照を渡す
  • B.17 コンストラクタ参照を使う
  • B.18 関数合成

付録C Web上のリソース

付録D 参考文献

訳者あとがき
索引