Java8のStream API mapメソッドを理解するにはFunctionインタフェースを理解する

Java8のStream API mapメソッドを理解するにはFunctionインタフェースを理解する

Functionインタフェースを理解すればmapの動きが理解しやすいと思います。

java.util.function.Functionインタフェースは関数型インタフェースと呼ばれるインタフェースで、applyメソッド一つだけを持っています。

TとRを持ち、applyメソッドは仮引数にT,戻り値がRとなります。

Employeeクラスがあるとします。

mapの引数はFunctionなので、匿名クラスを作成してみます。applyメソッドが返すのはここでは固定の文字列としています。TがEmployee型、RがString型です。

上記からapplyメソッドは仮引数を変換処理したりして、別の型で返すことができることがわかります。

list変数はEmployeeインスタンスのリストですが、mapメソッドを使用することによって、Stream<String>(ここではList<String>にしている)に変換できていることがわかります。こういった変換処理をする場合にmapメソッドを使用します。

ちなみに関数型インタフェースは匿名クラスである必要はありません。以下のように定義することも可能です。

ラムダ式で書く

ラムダ式で書くと以下のように記述できます。

このラムダ式は、Functionインタフェースがapplyメソッド一つしか持たない為、applyメソッドを呼んでいるのと同じ意味になります。メソッド名もreturnも{}も省略しているだけです。

ここではapplyメソッドの仮引数はEmployeeで、戻り値がStringになっているので、eがEmployeeの仮引数、e.getName().toUpperCase()はString型です。

Java8のStream API filterメソッドを理解するにはPredicateインタフェースを理解する

スポンサーリンク
  • このエントリーをはてなブックマークに追加
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA