1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaGold 主要な関数型インターフェースと使い方

Posted at
パッケージ インタフェース 戻り値型 メソッド
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();
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?