プログラミング Java

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

投稿日:2021年6月2日 更新日:

概要

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

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

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, Java
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

【Java】ディレクトリまたはファイルのみを再帰的に削除する

概要 再帰的にファイルやディレクトリを削除したいことがあります。 そんなときにサラッと書けるコードです。 環境 Java8以降 実装 指定したディレクトリを含めて全て削除 指定したディレクトリを含めて …

Thymeleafで1000円単位をカンマ区切りで表示する方法

Thymeleaf(テンプレートエンジン)で金額などの数値を 1000円単位のカンマ区切りで表示する方法です。 ここでは、カンマ区切りの機能はオブジェクト側で実装し、 Tymeleaf(View)は表 …

pageEncodingとcontentTypeのcharsetの違い

pageEncodingとcontentTypeのcharsetは処理されるタイミングが異なります。 それによって文字化けの原因につながっているので、どのように設定すればいいかを解説していきます。 違 …

PHPerがJavaを学ぶ5つのメリット

PHPerである私が会社でJavaの研修担当となり、私自身も大学生以来のJavaを勉強しなおして感じたことを書いていきたいと思います。 対象読者 ・PHP初心者 ・なんとなくPHPで動くプログラムを書 …

【SpringBoot入門】#6~ 登録機能の実装

概要 画面から送信されたデータをDBに登録する機能を実装します。 入力データはバリデーションによってチェックされることとします。 サーバサイドは以下のように各層で処理分けされます。 <Contorol …

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。