より少ないリソースでより多くのことを行う: Java 8 ラムダ式
ラムダ式を使用すると、Java コードが読みやすく、強力で、読みやすくなります。
プログラミング言語の欠点の 1 つは、特定の処理を実行するために記述される命令の数であり、大量のコードを記述しなければならない場合があります。ラムダ式は、いくつかのケースでこの問題を解決し、C#が何年も前からそうであったように、Javaをより強力かつ簡単にします.
ラムダ式はJava SE 8の新機能であり、これらはこのリリースに追加された最も注目すべき機能です。ラムダ式は、これらの式を使用するメソッドとインターフェイスをより明確に表現する方法を提供します。また、ラムダ式は、リストの参照、コレクションからのデータのフィルタリングと抽出を容易にすることで、Javaオブジェクトコレクションを改善します。パフォーマンス機能は、すべての新しい最新のコンピュータで利用可能なマルチタスク環境でJavaを強化します。
プログラマは、ラムダ式が関数型プログラミングの概念でJavaのオブジェクト指向の性質を汚染することを恐れています。実際、これらは数年前に C# 言語に影響を与えたのと同じ批判ですが、以前よりは改善されています
LINQ は、Visual Studio 2008 でも導入された一連の機能で、クエリを作成する機能を追加できるようになりました。LINQは、SQLデータベース、XMLドキュメント、ADO.Net データセット、.Netコレクション、ファイル、文字列などのクエリに役立ちます。
LINQ、およびラムダ式は、C# コミュニティで人気が高まっています。したがって、Java.
1つのメソッドのみを定義するインターフェイスは、Java 8では関数型インターフェイスと呼ばれます。ラムダ式は、関数型インターフェイスや内部クラスでよく使用されます.
次の3つのラムダ式を考えてみましょう:
Predicate: パラメータとして渡されたオブジェクトのプロパティ. Consumer: 渡されたオブジェクトを引数としてトリガーするアクション. Function: 1 つの結果をレンダリングします Y: X->Y Provider: X-> の X <>単項演算子のインスタンスが含まれます。x(X, X)->の二項演算子x
プログラミング言語の欠点の 1 つは、特定の処理を実行するために記述される命令の数であり、大量のコードを記述しなければならない場合があります。ラムダ式は、いくつかのケースでこの問題を解決し、C#が何年も前からそうであったように、Javaをより強力かつ簡単にします.
ラムダ式はJava SE 8の新機能であり、これらはこのリリースに追加された最も注目すべき機能です。ラムダ式は、これらの式を使用するメソッドとインターフェイスをより明確に表現する方法を提供します。また、ラムダ式は、リストの参照、コレクションからのデータのフィルタリングと抽出を容易にすることで、Javaオブジェクトコレクションを改善します。パフォーマンス機能は、すべての新しい最新のコンピュータで利用可能なマルチタスク環境でJavaを強化します。
プログラマは、ラムダ式が関数型プログラミングの概念でJavaのオブジェクト指向の性質を汚染することを恐れています。実際、これらは数年前に C# 言語に影響を与えたのと同じ批判ですが、以前よりは改善されています
Lambda 式と VisualBasic.Net
Lambda 式は、主に LINQ (統合言語クエリ) をサポートするために、C# と VB.Net に追加されました。ラムダ式は、ツリーのような式を作成するために使用できる匿名関数です。C# では、ラムダ式を作成するには、サイド ラムダ演算子 => の左側に入力し、式または命令のブロックを反対側に配置します。たとえば、式 x=>x*x は x という名前のパラメーターを指定し、x の 2 乗を返します VB.Net。この場合、無名関数を使用して lambda.LINQ は、Visual Studio 2008 でも導入された一連の機能で、クエリを作成する機能を追加できるようになりました。LINQは、SQLデータベース、XMLドキュメント、ADO.Net データセット、.Netコレクション、ファイル、文字列などのクエリに役立ちます。
LINQ、およびラムダ式は、C# コミュニティで人気が高まっています。したがって、Java.
Javaの匿名内部クラス
Javaの匿名内部クラスは、ラムダ式への第一歩でした。次の例に示すように、内部クラスを呼び出すことで使用できますJButton button = new JButton("test");内部クラス ActionListener ボタンに追加されるのは、メソッド actionPerformed() をその中に含めます。これにより、コードが少し節約されますが、それほど多くはありません.
button.addActionListener(new ActionListener(){
@Override public void actionPerformed(ActionEvent e){
System.out.println("ワンクリック");
}
});
1つのメソッドのみを定義するインターフェイスは、Java 8では関数型インターフェイスと呼ばれます。ラムダ式は、関数型インターフェイスや内部クラスでよく使用されます.
Javaでのラムダ式の構文
Javaのラムダ演算子は->です。C# と同様に、Java 8 は次の例に示すように引数をアタッチします(int x) ->x * x変数を宣言しました x で、この変数の 2 乗を返します x.
次の3つのラムダ式を考えてみましょう:
(int x, int y) ->x + yここで、例ActionListener lambda:
() ->36
(文字列) ->{ System.out.println(s); }
JButton button = new JButton("test");このコードが小さく、読みやすくなっていることは明らかです。また、内部クラス ActionListener が引数 e.
testButton.addActionListener(e ->System.out.println("ワンクリック"));
java.util.function
java.util.function は Java 8 で追加され、5 種類の関数型インタフェースが含まれています><<。>lambda式の>オブジェクトコレクションは、Javaでのコレクションの使用を改善できます。異なるバージョンでは、forEach が両方のインターフェイスで設定 Iterator および Iterable.
例:List には生徒のリストが含まれ、このクラスは student.
List and = Student.createShortList();
List.
Predicate list = および ->et.getAge() >= 20;
最後に、選択範囲で何かをすることができます:
aClass.doqlqthing(pl, list);
これは、以前のバージョンのJavaよりもはるかに高速です。より複雑な処理を行いたい場合は、 forEach():
et.forEach( e -> e.getName() );
結論として、Java言語に追加された機能は、そのオブジェクト指向の概念を少しも弱めることはありません。これらの機能により、言語は強力で、豊かで、エレガントになります。
References:
Listand = Student.createShortList();
Predicate最後に、選択範囲で何かをすることができます:list = および ->et.getAge() >= 20;
aClass.doqlqthing(pl, list);これは、以前のバージョンのJavaよりもはるかに高速です。より複雑な処理を行いたい場合は、 forEach():
et.forEach( e -> e.getName() );結論として、Java言語に追加された機能は、そのオブジェクト指向の概念を少しも弱めることはありません。これらの機能により、言語は強力で、豊かで、エレガントになります。