プログラミング 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、プリミティブ型を使用するインターフェース、プリミティブ型を変換するインターフェース、プリミティブ型を生成するインターフェースがある。

最後に

独学が難しいと感じていたり、エラーの解消に時間がかかるようだったらオンラインのサポートサービスを検討してみて下さい。
回答率100%の掲示板に質問し放題のオンラインサービス

参考情報

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

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

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

ランキング評価する

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

執筆者:


comment

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

CAPTCHA


関連記事

Java SE 11 Goldに合格する確実な方法

前提 Java SE 11 GoldはSilverに合格していないと受験できません。 飛び級的な合格はないので、Silverに合格していない方は先にSilverを取得しましょう。 現状を知る 自分がど …

【Java】配列の扱い方(初期化、追加、ソート、List変換など)

配列とは? ザックリ言うと、同じ種類の複数データを1つの変数に持つことができる仕組みです。 でも文字だけだとわかりずらいですよね💦 なので以下のコードを確認してみて下さい。 [crayon-647ba …

AWSへWebアプリケーション(Java)をデプロイする方法(書籍紹介)

対象者 ・個人開発者 ・ポートフォリオ作成者 手順 こちらの書籍を参考に私自身がAWSにデプロイした手順です。 書籍では図解もあってわかり易く解説されているので、ここでは流れを簡潔に説明します。 すで …

【Java】MapをStreamで処理する方法 7選!

概要 【Java】ListをStreamで処理する方法 7選! 【Java】SetをStreamで処理する方法 7選! に続き、Map編です。 Mapをstreamで扱う場合、entrySetまたはK …

どっち,比較

Javaに向いている人・向いていない人

プログラマ、エンジニアを目指している方の中で、どんな言語がいいのか? という悩みをもっている方に向けて、Javaに向いている人と向いていない人という観点でお話しします。 Javaができること Java …

■運営者プロフィール
IT業界10年のエンジニア。
PHP -> VBA -> Javaと渡り歩いてきて、今はJavaをメインにフリーランスエンジニアとして活躍中!

[保有資格]
・Java SE 11 Gold

一度はエンジニアを辞めざるを得なかった私が再びエンジニアとして復活した数奇な物語

SpringFramworkの良書

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

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