Java 8関数型インターフェース完全ガイド:java.util.functionパッケージ43種類
関数型インターフェースは単一の機能を持ちます。例えば、単一メソッドcompareToを持つComparableインターフェースは比較目的で使用されます。Java 8ではラムダ式で広範囲に使用される多くの関数型インターフェースがjava.util.functionパッケージで定義されています。以下はその一覧です。
| 番号 | インターフェースと説明 |
|---|---|
| 1 | BiConsumer<T,U> - 2つの入力引数を受け取り、結果を返さない操作 |
| 2 | BiFunction<T,U,R> - 2つの引数を受け取り、結果を生成する関数 |
| 3 | BinaryOperator<T> - 同型の2オペランド操作で同型結果を生成 |
| 4 | BiPredicate<T,U> - 2引数の述語(Boolean値関数) |
| 5 | BooleanSupplier - Boolean値結果のサプライヤー |
| 6 | Consumer<T> - 単一入力引数を受け取り、結果を返さない操作 |
| 7 | DoubleBinaryOperator - 2つのdoubleオペランド操作でdouble結果生成 |
| 8 | DoubleConsumer - 単一double引数を受け取り、結果を返さない操作 |
| 9 | DoubleFunction<R> - double引数を受け取り結果生成する関数 |
| 10 | DoublePredicate - 1つのdouble引数の述語 |
| 11 | DoubleSupplier - double値結果のサプライヤー |
| 12 | DoubleToIntFunction - double引数を受け取りint結果生成 |
| 13 | DoubleToLongFunction - double引数を受け取りlong結果生成 |
| 14 | DoubleUnaryOperator - 単一doubleオペランド操作でdouble結果生成 |
| 15 | Function<T,R> - 1引数を受け取り結果生成する関数 |
| 16 | IntBinaryOperator - 2intオペランド操作でint結果生成 |
| 17 | IntConsumer - 単一int引数を受け取り結果返さない操作 |
| 18 | IntFunction<R> - int引数を受け取り結果生成する関数 |
| 19 | IntPredicate - 1つのint引数の述語 |
| 20 | IntSupplier - int値結果のサプライヤー |
| 21 | IntToDoubleFunction - int引数を受け取りdouble結果生成 |
| 22 | IntToLongFunction - int引数を受け取りlong結果生成 |
| 23 | IntUnaryOperator - 単一intオペランド操作でint結果生成 |
| 24 | LongBinaryOperator - 2longオペランド操作でlong結果生成 |
| 25 | LongConsumer - 単一long引数を受け取り結果返さない操作 |
| 26 | LongFunction<R> - long引数を受け取り結果生成する関数 |
| 27 | LongPredicate - 1つのlong引数の述語 |
| 28 | LongSupplier - long値結果のサプライヤー |
| 29 | LongToDoubleFunction - long引数を受け取りdouble結果生成 |
| 30 | LongToIntFunction - long引数を受け取りint結果生成 |
| 31 | LongUnaryOperator - 単一longオペランド操作でlong結果生成 |
| 32 | ObjDoubleConsumer<T> - オブジェクトとdouble引数を受け取り結果返さない操作 |
| 33 | ObjIntConsumer<T> - オブジェクトとint引数を受け取り結果返さない操作 |
| 34 | ObjLongConsumer<T> - オブジェクトとlong引数を受け取り結果返さない操作 |
| 35 | Predicate<T> - 1引数の述語(Boolean値関数) |
| 36 | Supplier<T> - 結果のサプライヤー |
| 37 | ToDoubleBiFunction<T,U> - 2引数を受け取りdouble結果生成 |
| 38 | ToDoubleFunction<T> - double結果生成する関数 |
| 39 | ToIntBiFunction<T,U> - 2引数を受け取りint結果生成 |
| 40 | ToIntFunction<T> - int結果生成する関数 |
| 41 | ToLongBiFunction<T,U> - 2引数を受け取りlong結果生成 |
| 42 | ToLongFunction<T> - long結果生成する関数 |
| 43 | UnaryOperator<T> - 単一オペランド操作で同型結果生成 |
関数型インターフェース例:Predicate
Predicate<T>はtest(Object)メソッドでBoolean値を返す関数型インターフェース。オブジェクトがtrue/falseかをテストすることを意味します。
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class Java8Tester {
public static void main(String args[]) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
System.out.println("Print all numbers:");
eval(list, n -> true);
System.out.println("Print even numbers:");
eval(list, n -> n % 2 == 0);
System.out.println("Print numbers greater than 3:");
eval(list, n -> n > 3);
}
public static void eval(List<Integer> list, Predicate<Integer> predicate) {
for (Integer n : list) {
if (predicate.test(n)) {
System.out.println(n + " ");
}
}
}
}
実行結果
Print all numbers: 1 2 3 4 5 6 7 8 9 Print even numbers: 2 4 6 8 Print numbers greater than 3: 4 5 6 7 8 9
Java
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
- Java Vectorの理解:使い方、特徴、ArrayListとの比較
- Javaインターフェース完全ガイド: 定義・実装・多重継承・タグインターフェース