java.util.functionとは
色々な引数・返り値を持つ関数のinterface
を提供する標準パッケージです。
まとめ表
主要なインターフェース
インターフェース名 |
引数 |
返り値 |
説明 |
Runnable |
なし |
なし |
java.lang 比較対象 |
Supplier<T> |
なし |
T |
変数のgetterとして使える |
Consumer<T> |
T |
なし |
変数のsetterとして使える |
Function<T, R> |
T |
R |
本物の「関数」 |
Predicate<T> |
T |
boolean |
Tから予測する |
SupplierとConsumerは混同しやすいので注意!
Supplier→Supply→供給
Consumer→Consume→消費
と覚えておくとよさそう
Suppiler系列
インターフェース名 |
引数 |
返り値 |
BooleanSupplier |
なし |
boolean |
DoubleSupplier |
なし |
double |
IntSupplier |
なし |
int |
LongSupplier |
なし |
long |
Consumer系列
インターフェース名 |
引数 |
返り値 |
BiConsumer<T, U> |
T, U |
なし |
DoubleConsumer |
double |
なし |
IntConsumer |
int |
なし |
LongConsumer |
long |
なし |
ObjDoubleConsumer<T> |
T, double |
なし |
ObjIntConsumer<T> |
T, int |
なし |
ObjLongConsumer<T> |
T, long |
なし |
ObjConsumerの使い道がよくわからない
Function系列
インターフェース名 |
引数 |
返り値 |
BiFunction<T, U, R> |
T, U |
R |
DoubleFunction<R> |
double |
R |
DoubleToIntFunction |
double |
int |
DoubleToLongFunction |
double |
long |
IntFunction<R> |
int |
R |
IntToDoubleFunction |
int |
double |
IntToLongFunction |
int |
long |
LongFunction<R> |
long |
R |
LongToIntFunction |
long |
int |
LongToDoubleFunction |
long |
double |
ToDoubleBiFunction<T, U> |
T, U |
double |
ToIntBiFunction<T, U> |
T, U |
int |
ToLongBiFunction<T, U> |
T, U |
long |
ToDoubleFunction<T> |
T |
double |
ToIntFunction<T> |
T |
int |
ToLongFunction<T> |
T |
long |
Function多すぎ
Predicate系列
インターフェース名 |
引数 |
返り値 |
BiPredicate<T, U> |
T, U |
boolean |
DoublePredicate |
double |
boolean |
IntPredicate |
int |
boolean |
LongPredicate |
long |
boolean |
UnaryOperator系列
Functionの子でFunction<T,T>と同じ
インターフェース名 |
引数 |
返り値 |
UranyOperator<T> |
T |
T |
DoubleUranyOperator<T> |
double |
double |
IntUranOperator<T> |
int |
int |
LongUranyOperator<T> |
long |
long |
BinaryOperator系列
BiFunctionの子でBiFunction<T,T,T>と同じ
インターフェース名 |
引数 |
返り値 |
BinaryOperator<T> |
T, T |
T |
DoubleBinaryOperator<T> |
double, double |
double |
IntBinaryOperator<T> |
int, int |
int |
LongBinaryOperator<T> |
long, long |
long |
まとめ
java.util.functionにはSupplier、Consumerなどの他ラッパー型(int->Integer)などを用いないためのインターフェースが沢山あります。
ぜひ使ってみてください。正直上4つしか使わない
とても疲れたのでいいねしてくださると幸いです。