【Java入門】Functionの使い方まとめ

当ページのリンクには広告が含まれています。
目次

概要

Function <T, R>
apply(T)を関数メソッドに持つ関数型インタフェースです。
1つの引数を受け取って結果(R)を返します。
 

基本的な使い方

Functionインターフェースの第1の型(T)にはapplyメソッドの引数になる型を指定します。
第2の型(R)には処理結果の戻り値の型を指定します。
以下では、StringをIntegerに変換した結果を返しています。

 

各メソッドの使い方

andThen(Function after)

まず自身の関数を適用してから、関数afterを適用した結果を返します。

compose(Function before)

まず関数beforeを適用してから、自身を適用した結果を返します。

identity()

常に入力引数を返す関数を返します。
これはstaticなメソッドです。

 

Functionの特殊化された他のインターフェース

引数2つを持つように特殊化されたインターフェース

BiFunction<T,U,R>

2つの引数を受け取って結果を生成して返します。
T – 関数の第1引数の型
U – 関数の第2引数の型
R – 関数の結果の型

ToIntBiFunction<T,U,R>

2つの引数を受け取ってint値の結果を返す関数を生成します。
T – 関数の第1引数の型
U – 関数の第2引数の型
applyAsInt(Object, Object)をメソッドとして持ちます。

ToDoubleBiFunction<T,U,R>

2つの引数を受け取ってdouble値の結果を返す関数を生成します。
T – 関数の第1引数の型
U – 関数の第2引数の型
applyAsDouble(Object, Object)メソッドの持ちます。
※基本的な操作はToIntBiFunctionと同等なのでソースコードは割愛。

ToLongBiFunction<T,U,R>

2つの引数を受け取ってlong値の結果を返す関数を生成します。
T – 関数の第1引数の型
U – 関数の第2引数の型
applyAsLong(Object, Object)をメソッドとして持ちます。
※基本的な操作はToIntBiFunctionと同等なのでソースコードは割愛。

プリミティブ特殊型

プリミティブ型を引数にしてR型の結果を返します。

IntFunction<R>

intを引数にしてR型の結果を返します。

DoubleFunction<R>

doubleを引数にしてR型の結果を返します。
※基本的な操作はIntFunctionと同等なのでソースコードは割愛。

LongFunction<R>

longを引数にしてR型の結果を返します。
※基本的な操作はIntFunctionと同等なのでソースコードは割愛。

プリミティブ特殊型(変換)

関数名の左辺を引数として、右辺の値に変換した結果を返します。

IntToDoubleFunction
int値を引数として、double値を返します。
applyAsDouble(int)をメソッドとして持ちます。

 
他にも以下のインターフェースが用意されており、
基本的な使い方は同じです。

  • IntToLongFunction
  • DoubleToIntFunction
  • DoubleToLongFunction
  • LongToIntFunction
  • LongToDoubleFunction

プリミティブ特殊型(生成)

プリミティブ値の結果を生成した結果を返します。

ToIntFunction<T>
int値の結果を生成した結果を返します。
T – 関数の入力の型
applyAsInt(Object)をメソッドとして持ちます。

他にも以下のインターフェースが用意されており、
基本的な使い方は同じです。

  • ToDoubleFunction
  • ToLongFunction

まとめ

  • Functionは引数を1つ持ち、処理結果を返す関数型インターフェースである。
  • 特殊型として、2つの引数を持つBi、プリミティブ型を使用するインターフェース、プリミティブ型を変換するインターフェース、プリミティブ型を生成するインターフェースがある。

参考情報

インタフェースFunction<T,R>
パッケージjava.util.function

その他の関数型インターフェース

最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰しました。
復帰前は開発未経験でしたが、独学した知識と面接時のコミュニケーション力で見事開発エンジニアとして復帰しました!
今はフリーランスエンジニアとして仕事をしています。

■保有資格
・Java Gold SE 11

コメント

コメントする

CAPTCHA


目次