Java プログラミングでは、インターフェイスを実装したり、クラスを継承したりする必要がある状況によく遭遇します。ただし、このインターフェイスを実装するために完全なクラスが必要なく、単純な関数だけが必要な場合もあります。現時点では、Java 8 で導入された Lambda 式を使用できます。この記事では、ラムダ式の基本概念と利点を紹介し、具体的な例を通してラムダ式の単純さを分析します。
目次
ラムダ式を使用すると、特に関数型プログラミングの初心者にとってコードを理解しやすくなります。
1 はじめに
まず、Lambda という名前について説明します。Lambdaは略語ではなく、ギリシャ語アルファベットの 11 番目の文字の発音ですλ, ラムダ式は、匿名関数を表現する簡潔な方法であり、関数をパラメータとして他のメソッドに渡すか、戻り値として渡すことができます。
2.ラムダ式の利点
1.シンプル
ラムダ式を使用すると、関数インターフェイス (唯一の抽象メソッドとのインターフェイス) を簡潔な方法で表現できます。これにより、完全なクラスを作成しなくても、1 行のコードで単純なメソッドを定義できるため、コードがよりクリーンになります。
2.並列コンピューティングが容易
ラムダ式を Java 8 で導入された Stream API で使用すると、コレクションの並列処理が簡単になります。データを複数の部分に分割し、異なるスレッドで操作を実行することで、マルチコア プロセッサのパフォーマンスを最大限に活用できます。
import java.util.Arrays;
import java.util.List;
public class ParallelComputingExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int sumOfSquares = numbers.parallelStream()
.filter(n -> n % 2 == 0)
.map(n -> n * n)
.sum();
System.out.println("Sum of squares of even numbers: " + sumOfSquares);
}
}
この例では、まず 1 ~ 10 の整数のリストを作成します。次に、parallelStream()
メソッドを使用して並列ストリームを作成します。次に、filter()
メソッドを使用して偶数をフィルタリングし、map()
メソッドを使用して各偶数の 2 乗を計算します。最後に、sum()
メソッドを使用してすべての平方和を計算します。
3. コードの可読性の向上
ラムダ式を使用すると、特に関数型プログラミングの初心者にとってコードを理解しやすくなります。
3. 導出
次に、この順序でラムダ式の簡単さを体験していきます。
まずインターフェースを作成します
interface lambda{
void test();
}
インターフェースを実装する外部クラスを作成する
class demo1 implements lambda{
@Override
public void test(){
System.out.println("hello lambda!!!");
}
}
通話インターフェース
public class Main {
public static void main(String[] args) {
lambda test = new demo1();
test.test();
}
}
実装クラスを外部に記述するのは少し面倒なので、コードを最適化し、静的な内部クラスを使用してインターフェースを実装します。
public class Main {
public static class demo1 implements lambda{
@Override
public void test(){
System.out.println("hello lambda!!!");
}
}
public static void main(String[] args) {
lambda test = new demo1();
test.test();
}
}
interface lambda{
public void test();
}
実行結果も正しいので、次はローカル内部クラスをさらに最適化して使用していきます。
public class Main {
public static void main(String[] args) {
class demo1 implements lambda {
@Override
public void test() {
System.out.println("hello lambda!!!");
}
}
lambda test = new demo1();
test.test();
}
}
interface lambda {
public void test();
}
コードはさらに最適化することができ、今回はクラス名も必要とせず、匿名の内部クラスを直接使用します。
public class Main {
public static void main(String[] args) {
lambda test = new lambda() {
@Override
public void test() {
System.out.println("hello lambda!!!");
}
};
test.test();
}
}
interface lambda {
public void test();
}
実装クラスには名前がなくなりましたが、引き続き最適化できますか? Java 8 で導入された Lambda 式は引き続き最適化でき、インターフェイス名とメソッド名は単純に破棄されます (これは非常に意図的です)。
public class Main {
public static void main(String[] args) {
lambda test = ()->{
System.out.println("hello lambda!!!");
};
test.test();
}
}
interface lambda {
public void test();
}
コードははるかに単純ですか? インターフェイス名とメソッド名の代わりに ()-> を使用するだけで、実際にはコードをさらに最適化できます。
メソッド内にステートメントが 1 つだけある場合、中括弧は必要ありません。
lambda test = ()->
System.out.println("hello lambda!!!");
test.test();
ラムダ式ではパラメータを渡すことができます。パラメータが 1 つだけの場合、括弧は必要ありません。
public class Main {
public static void main(String[] args) {
lambda test = a->
System.out.println("hello lambda!!!");
test.test(520);
}
}
interface lambda {
public void test(int a);
}
ご覧のとおり、ラムダ式を使用すると、コードがより簡潔かつ明確になり、読みやすく、保守しやすくなります。
要約する
この記事では、Java 8 のラムダ式について、その基本概念、利点、具体的な例によるその単純さの分析などを含めて紹介します。ラムダ式を使用すると、コードを簡素化し、コードの可読性を向上させ、並列処理を容易にすることができます。この記事が Java での Lambda 式の理解と使用に役立つことを願っています。