java.util.functionの引数・返り値まとめ

## java.util.functionとは
色々な引数・返り値を持つ関数の```interface```を提供する標準パッケージです。
# まとめ表
### 主要なインターフェース
| インターフェース名 | 引数 | 返り値 | 説明 |
|:-:|:-:|:-:|:-:|
| **Runnable** | <font color="red">**なし**</font> |  <font color="red">**なし**</font> | **java.lang**　比較対象 |
| **Supplier\<T\>** | <font color="red">**なし**</font>  | <font color="blue">**T**</font>   | 変数のgetterとして使える |
| **Consumer\<T\>** |  <font color="blue">**T**</font> |  <font color="red">**なし**</font>  | 変数のsetterとして使える  |
| **Function\<T, R\>**  | <font color="blue">**T**</font>  | <font color="green">**R**</font>  | 本物の「関数」 |
| **Predicate\<T\>**  | <font color="blue">**T**</font>  | **boolean**  | Tから予測する |

**SupplierとConsumerは混同しやすいので注意！**
Supplier→Supply→**供給**
Consumer→Consume→**消費**
と覚えておくとよさそう
### Suppiler系列
| インターフェース名 | 引数 | 返り値 |
|:-:|:-:|:-:|
| **BooleanSupplier** | <font color="red">**なし**</font>  | **boolean**|
| **DoubleSupplier** | <font color="red">**なし**</font>  | **double**|
| **IntSupplier** | <font color="red">**なし**</font>  | **int**   |
| **LongSupplier** | <font color="red">**なし**</font>  | **long** |
### Consumer系列

| インターフェース名 | 引数 | 返り値 |
|:-:|:-:|:-:|
| **BiConsumer\<T, U\>** | **<font color="blue">T, U</font>** |<font color="red">**なし**</font>  |
| **DoubleConsumer** | **double** |<font color="red">**なし**</font>  |
| **IntConsumer** | **int** |<font color="red">**なし**</font>  |
| **LongConsumer** | **long** |<font color="red">**なし**</font>  |
| **ObjDoubleConsumer\<T\>** | **<font color="blue">T</font>, double** |<font color="red">**なし**</font>  |
| **ObjIntConsumer\<T\>** | **<font color="blue">T</font>, int** |<font color="red">**なし**</font>  |
| **ObjLongConsumer\<T\>** | **<font color="blue">T</font>, long** |<font color="red">**なし**</font>  |

~~ObjConsumerの使い道がよくわからない~~
### Function系列
| インターフェース名 | 引数 | 返り値 |
|:-:|:-:|:-:|
| **BiFunction\<T, U, R\>**  | <font color="blue">**T, U**</font>  | <font color="green">**R**</font>  |
| **DoubleFunction\<R\>**  | **double**  | <font color="green">**R**</font>  |
| **DoubleToIntFunction**  | **double**  | **int**  |
| **DoubleToLongFunction**  | **double**  | **long**  |
| **IntFunction\<R\>**  | **int**  | <font color="green">**R**</font>  |
| **IntToDoubleFunction**  | **int**  | **double**  |
| **IntToLongFunction**  | **int**  | **long**  |
| **LongFunction\<R\>**  | **long**  | <font color="green">**R**</font>  |
| **LongToIntFunction**  | **long**  | **int**  |
| **LongToDoubleFunction**  | **long**  | **double**  |
| **ToDoubleBiFunction\<T, U\>**  | <font color="blue">**T, U**</font>  | **double**  |
| **ToIntBiFunction\<T, U\>**  | <font color="blue">**T, U**</font>  | **int**  |
| **ToLongBiFunction\<T, U\>**  | <font color="blue">**T, U**</font>  | **long**  |
| **ToDoubleFunction\<T\>**  | <font color="blue">**T**</font>  | **double**  |
| **ToIntFunction\<T\>**  | <font color="blue">**T**</font>  | **int**  |
| **ToLongFunction\<T\>**  | <font color="blue">**T**</font>  | **long**  |

~~Function多すぎ~~

### Predicate系列
| インターフェース名 | 引数 | 返り値 |
|:-:|:-:|:-:|
| **BiPredicate\<T, U\>**  | <font color="blue">**T, U**</font>  | **boolean**  |
| **DoublePredicate**  | **double**  | **boolean**  |
| **IntPredicate**  | **int**  | **boolean**  |
| **LongPredicate**  | **long**  | **boolean**  |

## UnaryOperator系列
### Functionの子でFunction\<T,T\>と同じ
| インターフェース名 | 引数 | 返り値 |
|:-:|:-:|:-:|
| **UranyOperator\<T\>**  | <font color="blue">**T**</font>  | <font color="green">**T**</font>  |
| **DoubleUranyOperator\<T\>**  | **double**  | **double**  |
| **IntUranOperator\<T\>**  | **int**  | **int**  |
| **LongUranyOperator\<T\>**  | **long**  | **long**  |

## BinaryOperator系列
### BiFunctionの子でBiFunction\<T,T,T\>と同じ
| インターフェース名 | 引数 | 返り値 |
|:-:|:-:|:-:|
| **BinaryOperator\<T\>**  | <font color="blue">**T, T**</font>  | <font color="green">**T**</font>  |
| **DoubleBinaryOperator\<T\>**  | **double, double**  | **double**  |
| **IntBinaryOperator\<T\>**  | **int, int**  | **int**  |
| **LongBinaryOperator\<T\>**  | **long, long**  | **long**  |

# まとめ
java.util.functionにはSupplier、Consumerなどの他ラッパー型(int->Integer)などを用いないためのインターフェースが沢山あります。
ぜひ使ってみてください。~~正直上4つしか使わない~~

**とても疲れたのでいいねしてくださると幸いです。**