オブジェクトの実装に従ってリスト内の要素を計算して置換する。ラムダ式と組み込み関数型インタフェース関数型インタフェースの要件は、抽象メソッドが1つ宣言されていること。メソッドの宣言は関数型インタフェースの要件に関係しない。コンパイル時にチェックすることができる。クラスで宣言されているメソッドと同一シグニチャの抽象メソッドは関数型インタフェースの抽象メソッドとは見なされない。obj);}ラムダ式は、匿名内部クラスの実装を簡潔に記述するための構文仕様。(厳密にはラムダ式と匿名クラスの挙動は違う)関数型プログラミングでは、関数を第1級オブジェクトとして扱うことができる。第1級オブジェクトとはリテラルと同様に扱うことができるオブジェクトを指す。サポートする関数を高階関数と呼ぶ。引数を取るラムダ式では引数の型は省略可。引数が1つだけの場合は引数を囲う括弧は省略可。括弧を省略する場合は引数の型は記述不可。引数を2つ以上取るラムダ式では括弧は省略不可。キーワードは記述不可。パッケージが提供するインタフェースは基本的に以下の4つ。宣言する関数型インタフェース基本のインタフェースの他に特殊化したインタフェースが存在する。(二項演算子)特殊化型を含めて、ひと通りのインタフェースについては以下にまとめる。メソッドが提供されている。メソッドが提供されている。オブジェクトを後に適用する。オブジェクトを先に適用する。関数型インタフェースの抽象メソッドとラムダ式で呼び出すメソッドのシグニチャが同一である場合はメソッド参照が使える。メソッド参照を使う場合はラムダ式の仮引数宣言とメソッド呼び出しの括弧は記述不可。メソッドとシグニチャが同じである。ラムダ式で処理を実装する場合は以下の通り。System.out.println(s);c.accept("foo");これをメソッド参照で記述する場合は以下の通り。System.out::println;c.accept("foo");コンストラクタメソッドの呼び出しをメソッド参照で記述する場合はコンストラクタ参照と呼ばれる。コンストラクタ参照の代入先の変数は、関数型インタフェースである必要がある。メソッドはコンストラクタメソッドと同じシグニチャである。ラムダ式で記述する場合は以下の通り。f.apply("1");これをコンストラクタ参照で記述する場合は以下の通り。いうラムダ式に置き換えて考えることができる。形式で記述することができる。オブジェクトの引数なしのメソッドを呼び出す場合。3これをメソッド参照で記述する場合は以下の通り。s1.concat(s2);System.out.println(f.apply("bar"));これをメソッド参照で記述する場合は以下の通り。APIストリームAPIの基本的なステップは以下の通り。データソースからストリームオブジェクトを取得するストリームオブジェクトに対して中間操作を適用するストリームオブジェクトに対して終端操作を適用するデータソースは、配列やコレクション、ファイルから読み込んだデータ、数値範囲などが挙げられる。中間操作では処理関数を保持した新しいストリームオブジェクトが返る。中間操作のメソッド呼び出しの時点ではストリームオブジェクトに対する処理は実行されない。中間操作の処理が実行されるのは終端操作が実行されるタイミング。(遅延評価)終端操作はストリームオブジェクトに対して1度だけ適用できる。終端操作が適用されたストリームに対して再度ストリーム処理を適用することはできない。インタフェースを基底とした以下のサブインタフェースが提供されている。