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
JavaConsumer<String> c = s -> System.out.println(s);
c.accept("hello");
覚え方
Consumer は「受け取る」ので
Predicate は test
JavaPredicate<Integer> p = n -> n > 0;
System.out.println(p.test(10));
覚え方
条件判定なので
Function / Operator は apply
JavaFunction<String, Integer> f = s -> s.length();
System.out.println(f.apply("abc"));
覚え方
Supplier は get
JavaSupplier<Double> s = () -> Math.random();
System.out.println(s.get());
覚え方
Runnable と Callable の違い
|
Runnable |
Callable |
| 戻り値 |
なし |
あり |
| 例外 throws |
不可 |
可 |
| メソッド |
run() |
call() |
Operator の正体
UnaryOperator
は実質:
と同じ。
つまり:
UnaryOperator の例
JavaUnaryOperator<Integer> op = n -> n * 2;
System.out.println(op.apply(10));
BinaryOperator の例
JavaBinaryOperator<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
JavaPredicate<String> p = s -> s.isEmpty();
p.???
答え
Q2
JavaConsumer<Integer> c = n -> System.out.println(n);
c.???
答え
Q3
JavaSupplier<String> s = () -> "abc";
s.???
答え
最短暗記法
| キーワード |
メソッド |
| 供給 |
get |
| 消費 |
accept |
| 判定 |
test |
| 変換 |
apply |
| 実行 |
run |
| 実行+戻り値 |
call |
超重要ポイント
覚える順番
Text Only1. Supplier → get
2. Consumer → accept
3. Predicate → test
4. Function → apply
まずこの4つを覚えると、
Operator や Bi系も自然に覚えやすくなります。