Javaでは、 匿名関数 、ラムダ式とも呼ばれます。より簡潔で読みやすいコードを提供する方法として Java 8 で導入されました。これらを使用すると、クラスやインターフェイスを明示的に定義することなく、1 行のコードで関数を定義できます。
js セットタイムアウト
匿名関数とは何ですか?
匿名関数は、名前がなく、識別子にバインドされていない関数です。通常、これはインラインで定義され、別の関数に引数として渡すことも、関数からの値として返すこともできます。 Java では、匿名関数はラムダ式として実装されます。ラムダ式は、匿名関数を定義する簡単な方法です。
構文
Java の匿名関数の構文は次のとおりです。
(parameters) -> { body }
パラメーターは関数への入力であり、本体は関数が呼び出されたときに実行されるコードです。以下は、2 つの整数を入力として受け取り、その合計を返す無名関数の例です。
(int a, int b) -> { return a + b; }
上記の匿名関数は、引数として別の関数に渡すことも、変数に割り当てることもできます。
Function add = (a, b) -> a + b;
この例では、2 つの整数を入力として受け取り、その合計を返す関数である add という変数を定義します。
匿名関数の利点
Java で匿名関数を使用すると、次のようないくつかの利点があります。
簡潔な構文: 匿名関数は、別のクラスやインターフェイスを定義する必要なく、関数を定義する簡潔な方法を提供します。
読み取り可能なコード: 匿名関数はインラインで定義されるため、コードは読みやすく、理解しやすくなります。
柔軟性: 匿名関数は、他の関数に引数として渡したり、関数から値として返すことができるため、関数の使用方法がより柔軟になります。
パフォーマンスを向上させた: 匿名関数を使用すると、関数の定義と呼び出しに必要なメモリと処理能力の量が削減され、パフォーマンスが向上します。
以下は、整数のリストをフィルタリングするための匿名関数 (ラムダ式) の使用を示す Java コードの例です。
AnonymousFunctionExample.java
import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; public class AnonymousFunctionExample { public static void main(String[] args) { List numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); numbers.add(5); // Filter the list to only include even numbers Predicate isEven = (n) -> n % 2 == 0; List evenNumbers = filter(numbers, isEven); // Print the even numbers System.out.println('Even numbers:'); for (Integer number : evenNumbers) { System.out.println(number); } } // Filter a list using a predicate public static List filter(List list, Predicate predicate) { List result = new ArrayList(); for (T element : list) { if (predicate.test(element)) { result.add(element); } } return result; } }
出力:
Even numbers: 2 4
このコードでは、整数のリストを定義し、匿名関数 (ラムダ式) を使用してリストをフィルタリングして偶数のみを含める述語を定義します。次に、フィルター メソッドを使用して述語をリストに適用し、偶数の新しいリストを返します。最後に、for ループを使用して偶数を出力します。
以下は、文字列のリストを並べ替えるための匿名関数 (ラムダ式) の使用を示す別の Java コードの例です。
AnonymousFunctionExample.java
import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class AnonymousFunctionExample { public static void main(String[] args) { List fruits = new ArrayList(); fruits.add('Apple'); fruits.add('Banana'); fruits.add('Grape'); fruits.add('Orange'); fruits.add('Pineapple'); // Sort the list of fruits alphabetically fruits.sort((f1, f2) -> f1.compareTo(f2)); // Print the sorted list of fruits System.out.println('Sorted list of fruits:'); for (String fruit : fruits) { System.out.println(fruit); } } }
出力:
Sorted list of fruits: Apple Banana Grape Orange Pineapple
上記のコードでは、フルーツのリストを定義し、匿名関数 (ラムダ式) を使用してリストをアルファベット順に並べ替えるコンパレータを定義しています。次に、sort メソッドを使用してコンパレータをリストに適用し、並べ替えます。最後に、for ループを使用して、ソートされた果物のリストを出力します。
結論
Java の匿名関数は、別のクラスやインターフェイスを定義することなく、関数を定義するための簡潔で読みやすい方法を提供します。これらを使用すると、コードのパフォーマンスが向上し、関数の使用方法がより柔軟になります。 Java 8 でのラムダ式の導入により、匿名関数は開発者にとって、より効率的で保守しやすいコードを作成するための重要なツールになりました。