【Java】基本的なラムダ式と関数型インターフェース5選

■概要

ラムダ式と関数型インターフェースはセットで使用される。
関数型インターフェースに関しては、自由に定義可能である。
今回は、ラムダ式の基本的な書き方と`java.util.function`パッケージ内の頻繁に使用される、関数型インターフェース5つを記す。

■ラムダ式の基本的な書き方

ラムダ式の宣言構文は以下の通り。

関数型インターフェースの型 変数名 = ( 引数 ) -> ( 処理 );

引数の括弧「( )」について、引数が1つの時だけ省略可能。

処理について、1つあるいは複数書きたい場合は、中括弧「{ }」をつける、つけないで、以下の制約に基づいて実装する。

中括弧あり中括弧なし
複数の処理を記述可能1つのみ処理を記述可能
戻り値を戻すにはreturnが必要戻り値を戻すにはreturnが不要(省略)

■関数型インターフェース

Javaのラムダ式と一緒によく使う主要な関数型インタフェースは以下の通り

インターフェース引数戻り値用途
Function<T, R>TRTを受け取ってRを返す処理
Cunsumer<T>TなしTを受け取って処理をする
Supplier<T>なしT値を返すだけの処理
Predicate<T>Tboolean条件判定(true/false)
Runnableなしなし何も受け取らず処理する

■サンプルコードと実行結果

以下、Javaのラムダ式と一緒によく使う主要な関数型インタフェースの使用例を示す。

▼Function<T, R>

・コード

// 引数あり、戻り値あり
Function<Integer, Integer> square = x -> x * x;
System.out.println(square.apply(5));

・結果

25

▼Cunsumer<T>

・コード

// 引数あり、戻り値なし
Consumer<String> printer = message -> System.out.println("メッセージ: " + message);
printer.accept("こんにちは");

・結果

メッセージ: こんにちは

▼Supplier<T>

・コード

// 引数なし、戻り値あり
Supplier<Double> randomSupplier = () -> Math.random();
System.out.println(randomSupplier.get());

・結果

0.9404979639286173

▼Predicate<T>

・コード

// 引数あり、戻り値Boolean
Predicate<Integer> judgement = num -> {
  int result = num + 3;
  return result == 9;
  };
System.out.println(judgement.test(6));

・結果

true

▼Runnable

・コード

// 引数なし、戻り値なし
Runnable task = () -> System.out.println("実行中...");
task.run();

・結果

実行中...

コメント

タイトルとURLをコピーしました