Skip to content
閲覧中:
1

Java Gold 向け 関数型インターフェースまとめ

Java Gold では
「どのメソッド名か」「引数の数」「戻り値」
を問われることが非常に多いです。


まずは分類で覚える

種類 役割 戻り値
Supplier 値を取り出す あり
Consumer 値を受け取るだけ なし(void)
Predicate 条件判定 boolean
Function 変換する 別型
Operator 同じ型で計算 同じ型

一覧(覚えやすい版)

インターフェース 意味 メソッド イメージ
Supplier<T> 供給する get() 値を取り出す
Consumer<T> 消費する accept(T) 値を受け取る
BiConsumer<T,U> 2つ受け取る accept(T,U) 2個受け取る
Predicate<T> 条件判定 test(T) 条件チェック
BiPredicate<T,U> 2条件判定 test(T,U) 2個で判定
Function<T,R> 型変換 apply(T) 変換する
BiFunction<T,U,R> 2入力変換 apply(T,U) 2つ使って変換
UnaryOperator<T> 同型変換 apply(T) 1個加工
BinaryOperator<T> 同型2項演算 apply(T,T) 2個計算
Runnable 実行のみ run() 実行
Callable<V> 戻り値あり実行 call() 実行+戻り値

Consumer は accept

Java
Consumer<String> c = s -> System.out.println(s);

c.accept("hello");

覚え方

Consumer は「受け取る」ので

Text Only
accept = 受け入れる

Predicate は test

Java
Predicate<Integer> p = n -> n > 0;

System.out.println(p.test(10));

覚え方

条件判定なので

Text Only
test = テストする

Function / Operator は apply

Java
Function<String, Integer> f = s -> s.length();

System.out.println(f.apply("abc"));

覚え方

Text Only
apply = 適用する

Supplier は get

Java
Supplier<Double> s = () -> Math.random();

System.out.println(s.get());

覚え方

Text Only
get = 取得する

Runnable と Callable の違い

Runnable Callable
戻り値 なし あり
例外 throws 不可
メソッド run() call()

Operator の正体

UnaryOperator

Java
UnaryOperator<T>

は実質:

Java
Function<T, T>

と同じ。

つまり:

Text Only
引数と戻り値が同じ型

UnaryOperator の例

Java
UnaryOperator<Integer> op = n -> n * 2;

System.out.println(op.apply(10));

BinaryOperator の例

Java
BinaryOperator<Integer> op = (a, b) -> a + b;

System.out.println(op.apply(3, 5));

Bi が付く意味

名前 引数
Consumer 1個
BiConsumer 2個
Function 1個
BiFunction 2個
Predicate 1個
BiPredicate 2個

Java Gold 暗記用チートシート

値を返す系

IF メソッド
Supplier get()
Function apply()
UnaryOperator apply()
BinaryOperator apply()
Callable call()

戻り値なし系

IF メソッド
Consumer accept()
BiConsumer accept()
Runnable run()

boolean系

IF メソッド
Predicate test()
BiPredicate test()

試験によく出る問題

Q1

Java
Predicate<String> p = s -> s.isEmpty();

p.???

答え

Java
p.test("")

Q2

Java
Consumer<Integer> c = n -> System.out.println(n);

c.???

答え

Java
c.accept(10)

Q3

Java
Supplier<String> s = () -> "abc";

s.???

答え

Java
s.get()

最短暗記法

キーワード メソッド
供給 get
消費 accept
判定 test
変換 apply
実行 run
実行+戻り値 call

超重要ポイント

覚える順番

Text Only
1. Supplier → get
2. Consumer → accept
3. Predicate → test
4. Function → apply

まずこの4つを覚えると、 Operator や Bi系も自然に覚えやすくなります。


語感で覚える方法

単語 意味
get 取得
accept 受け入れる
test 試験する
apply 適用する
run 実行する
call 呼び出す

さらに試験向けポイント

Function

Text Only
T = 引数型
R = 戻り値型
Java
Function<String, Integer>

なら:

Text Only
String を受け取って Integer を返す

Predicate

Java
Predicate<String>

なら:

Text Only
String を受け取って boolean を返す

Consumer

Java
Consumer<String>

なら:

Text Only
String を受け取るだけ(戻り値なし)

ラムダ式との対応

IF ラムダ例
Supplier () -> "abc"
Consumer x -> System.out.println(x)
Predicate x -> x > 0
Function x -> x.length()

Gold試験で狙われやすい罠

Consumer に test は存在しない

Java
Consumer<String> c = s -> {};

c.test("a"); // コンパイルエラー

Predicate に apply は存在しない

Java
Predicate<Integer> p = x -> x > 0;

p.apply(10); // コンパイルエラー

Supplier は引数なし

Java
Supplier<String> s = () -> "abc";
Java
s.get();

引数を書かない。


最後のまとめ

IF 引数 戻り値 メソッド
Supplier なし あり get()
Consumer 1個 void accept()
Predicate 1個 boolean test()
Function 1個 任意 apply()
UnaryOperator 1個 同型 apply()
BinaryOperator 2個 同型 apply()
Runnable なし void run()
Callable なし あり call()