Javaによる関数型プログラミング


Javaによる関数型プログラミング ―Java 8ラムダ式とStream


オライリー・ジャパン


著者:Venkat Subramaniam
訳者:株式会社プログラミングシステム社


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

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 参考文献

訳者あとがき
索引

書籍目次

Posted by shi-n