メインコンテンツにスキップ
モジュール 7 · レッスン 1 / 2コース内の 13/14~12 min
モジュールのレッスン (1/2)

ラムダ式

Java 8 以降、Lambda Expressions を介して関数型プログラミングがサポートされます。ラムダ式は本質的に匿名メソッド (名前のない関数) であり、引数としてメソッドに渡したり、変数に格納したりできます。

機能インターフェイス

ラムダ式は、関数インターフェイスが必要な場合にのみ使用できます。関数型インターフェイスは、1 つの抽象メソッド を宣言するインターフェイスです。 Java は、これらのインターフェースにオプションの @FunctionalInterface アノテーションを付けます。

ユーザー定義の関数インターフェイスの例:

Java
@FunctionalInterface
interface MathOperation {
    int operate(int a, int b);
}

Java 8 より前では、匿名の内部クラスを定義する必要がありました。ラムダを使用すると、構文は次のように簡略化されます。

Java
MathOperation addition = (a, b) -> a + b;
int result = addition.operate(5, 3); // Returns 8

ラムダ式の構造

ラムダの基本的な構文は次のとおりです。

Code
(parameters) -> { body }
  • パラメータなし: () -> System.out.println("Hello")
  • 単一パラメータ: x -> x * 2 (括弧は省略可能)
  • 複数のパラメータ: (x, y) -> x + y
  • 複数行の本文: 本文に複数のステートメントが含まれる場合、中かっこ {} と明示的な return ステートメントが必要です。
Java
MathOperation detailedAddition = (a, b) -> {
    System.out.println("Adding...");
    return a + b;
};

Java の標準関数インターフェイス

java.util.function パッケージは、いくつかの組み込み関数インターフェイスを提供します。

  • Predicate<T>: T 型の引数を受け入れ、ブール値を返します (test(T t) メソッド)。
  • Consumer<T>: T 型の引数を受け入れ、結果を返さずに操作を実行します (accept(T t) メソッド)。
  • Function<T, R>: 引数 T を受け取り、結果 R (apply(T t) メソッド) を返します。
  • Supplier<T>: 引数を受け入れず、T 型の値を返します (get() メソッド)。

自分で試してみてください

運動#java.m7.l1.e1
試行回数: 0読み込み中…

2 つの整数を加算するラムダ式を使用して Calculator インターフェイスをインスタンス化して、コードを完成させます。次に、5 と 3 を渡して計算メソッドを呼び出し、結果を出力します。

エディターを読み込み中…
ヒントを表示

「Calculator adder = (a, b) -> a + b;」を宣言し、print 呼び出し内で「adder.calculate(5, 3)」を呼び出します。

3 回の試行後に解決策が利用可能になります

運動#java.m7.l1.e2
試行回数: 0読み込み中…

文字列の長さが 5 文字を超えているかどうかを確認するラムダ式を使用して、isLong という名前の標準関数インターフェイス Predicate<String> のインスタンスを作成します。次に、「hello world」のテスト結果を出力します。

エディターを読み込み中…
ヒントを表示

`Predicate<String>` のラムダはパラメータ `s` を受け取り、ブール条件として `s.length() > 5` を返します。

3 回の試行後に解決策が利用可能になります

運動#java.m7.l1.e3
試行回数: 0読み込み中…

文字列名のリストをアルファベット順に並べ替えるには、そのリストに対して sort() メソッドを呼び出し、Comparator を実装するラムダ式を渡します (2 つの文字列 s1、s2 を取得し、compareTo を使用して比較します)。

エディターを読み込み中…
ヒントを表示

`names.sort((s1, s2) -> s1.compareTo(s2));` を使用して、リストをその場で並べ替えます。

3 回の試行後に解決策が利用可能になります