パッケージ | インタフェース | 戻り値型 | メソッド |
---|---|---|---|
java.util.function | Supplier<T> | T | get() |
java.util.function | Consumer<T> | void | accept(T) |
java.util.function | BiConsumer<T, U> | void | accept(T, U) |
java.util.function | Predicate<T> | boolean | test(T) |
java.util.function | BiPredicate<T, U> | boolean | test(T, U) |
java.util.function | Function<T, R> | R | apply(T) |
java.util.function | BiFunction<T, U, R> | R | apply(T, U) |
java.util.function | UnaryOperator<T> | T | apply(T) |
java.util.function | BinaryOperator<T> | T | apply(T, T) |
java.lang | Runnable | void | run() |
java.util.concurrent | Callable<V> | V | call() |
各インターフェースの概要とサンプルコード
1. Supplier
概要:Supplierは、引数を取らずに結果を供給するためのインターフェースです。T get()メソッドで値を返します。
用途:値の生成や、ランダムな値の提供に利用されます。
Supplier<String> supplier = () -> "Hello, World!";
System.out.println(supplier.get()); // 出力: Hello, World!
2. Consumer
概要:Consumerは、引数を受け取り、その値に基づいて処理を行います。void accept(T t)メソッドで動作します。
用途:出力やログ記録など、受け取ったデータを処理する際に使います。
Consumer<String> consumer = s -> System.out.println("Consumed: " + s);
consumer.accept("Hello"); // 出力: Consumed: Hello
3. BiConsumer
概要:BiConsumerは2つの引数を受け取り、それを使って処理を行います。void accept(T t, U u)メソッドがあります。
用途:例えばキーと値を一緒に処理するなど、2つのデータを同時に扱う場合に適しています。
BiConsumer<String, Integer> biConsumer = (name, age) -> System.out.println(name + " is " + age + " years old.");
biConsumer.accept("Alice", 30); // 出力: Alice is 30 years old.
4. Predicate
概要:Predicateは引数を受け取り、条件に基づいてtrueかfalseを返します。boolean test(T t)メソッドがあります。
用途:フィルタリングや条件判定など、引数を評価する際に使われます。
Predicate<Integer> isPositive = x -> x > 0;
System.out.println(isPositive.test(5)); // 出力: true
5. BiPredicate
概要:BiPredicateは2つの引数を受け取り、条件に基づいてtrueかfalseを返します。boolean test(T t, U u)メソッドがあります。
用途:2つの値を比較して、条件に一致するかを判定する場合に使用します。
BiPredicate<String, String> equals = (s1, s2) -> s1.equals(s2);
System.out.println(equals.test("hello", "hello")); // 出力: true
6. Function
概要:Functionは引数を受け取り、変換して結果を返します。R apply(T t)メソッドがあります。
用途:データの変換や加工処理に使われます。
Function<String, Integer> lengthFunction = s -> s.length();
System.out.println(lengthFunction.apply("Hello")); // 出力: 5
7. BiFunction
概要:BiFunctionは2つの引数を受け取り、1つの結果を返します。R apply(T t, U u)メソッドがあります。
用途:加算や文字列の連結など、複数の引数から1つの結果を得る場合に利用します。
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
System.out.println(add.apply(3, 4)); // 出力: 7
8. UnaryOperator
概要:UnaryOperatorは1つの引数を受け取り、同じ型の結果を返します。Functionの特殊版です。
用途:型変換なしでの値の更新や操作に使います。
UnaryOperator<Integer> increment = x -> x + 1;
System.out.println(increment.apply(5)); // 出力: 6
9. BinaryOperator
概要:BinaryOperatorは2つの引数を受け取り、同じ型の結果を返します。BiFunctionの特殊版です。
用途:同じ型の2つの値を処理する場合に使います。
BinaryOperator<Integer> max = (a, b) -> a > b ? a : b;
System.out.println(max.apply(3, 5)); // 出力: 5
10. Runnable
概要:Runnableは引数も戻り値もなく、void run()メソッドで単純な処理を実行します。
用途:スレッドや並列処理で使用され、処理内容を指定するためのインターフェースです。
Runnable runnable = () -> System.out.println("Running task...");
new Thread(runnable).start(); // 出力: Running task...
11. Callable
概要:Callableは引数を取らず、call()メソッドで処理を行い、結果を返します。Runnableに似ていますが、結果を返す点が異なります。
用途:スレッドから結果を受け取る場合や例外処理が必要な場合に使用されます。
Callable<String> callable = () -> "Task result";
try {
System.out.println(callable.call()); // 出力: Task result
} catch (Exception e) {
e.printStackTrace();
}