logo

Javaの矢印演算子

この記事では、Java の矢印演算子 (->) について、概念を理解するのに役立つサンプル コードとともに説明します。

ラムダ式の作成に使用されるアロー演算子は、Java 8 でのラムダ式機能の追加とともに導入されました。この演算子は、式の本体を引数から分割します。

 (parameters) -> { statements; } // Lambda expression having arrow 

Java コードをより理解しやすく、簡潔にするために、Java 8 で導入されたラムダ式を匿名クラスの代わりに使用できます。

Java 8 より前の Java を使用して匿名クラスを構築する方法を以下に示します。

Javaでの文字列から文字への変換
 Runnable r1 = new Runnable() { @Override public void run() { System.out.print(' method Run '); } }; 

ここでは、ラムダ式を利用して Java 8 で前述のタスクを実行する方法を示します。

 Runnable r1 = ()-> System.out.print(' method Run '); 

ラムダ演算子とアロー演算子の使用方法をよりよく理解するために、いくつかの例から始めましょう。

Javaで矢印演算子を使用するにはどうすればよいですか?

この図では、両方の Drawable インターフェイスのdraw() メソッドが、ラムダ式とアロー演算子を使用して実装されています。以下の図を参照してください。

M.ジャワ

postgresのシリアル
 interface Drawable{ public void draw(); } public class M { public static void main(String[] args) { int w = 20; // arrow operator Drawable d=()->{ System.out.println(' Drawing width is '+w); }; d.draw(); } } 

出力:

Javaの矢印演算子

ラムダ式は、関数型アプローチを使用して簡潔なコードを記述する優れた手法であるため、Java プログラミングでさまざまな方法で利用できます。これを使用できる例をいくつか紹介します。

Java コレクションの配列演算子

この図では、ラムダ式を使用して ArrayList からデータをフィルターします。望ましい結果を達成するために、filter() メソッドとストリーム API を使用しました。ラムダコードが非ラムダコードよりも記述がいかに簡単であるかがわかります。以下の図を参照してください。

抽象クラスはコンストラクターを持つことができますか

M1.java

 package javaexample; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; class P{ int id; String n; float pri; public P(int id, String n, float pri) { this.id = id; this.n = n; this.pri = pri; } } public class M1{ public static void main(String[] args) { List<p> l = new ArrayList</p><p>(); l.add(new P(1,&apos; JavaTpoint &apos;,17000)); l.add(new P(3,&apos; Tutorial and example &apos;,100500)); l.add(new P(2,&apos; Website &apos;,25000)); // using the arrow to filter data Stream</p><p> filtered_data = l.stream().filter(q -&gt; q.pri &gt; 17000); filtered_data.forEach( p -&gt; System.out.println(p.n+&apos;: &apos;+p.pri) ); } } </p>

出力:

最後のコミットを元に戻す
 Tutorial and example: 100500.0 Website: 25000.0 

Javaスレッドの配列演算子

両方の実行可能インターフェイスの run() メソッドを実装するために、このインスタンスではラムダ式を使用しました。 Runnable には単一のメソッド インターフェイスがあるため、ラムダ式を簡単に使用できます。下の図を参照してください。

M3.java

 package javaexample; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class M3{ public static void main(String[] args) { // using arrow operator Runnable r1=()-&gt;{ System.out.println(&apos; Thread is running... &apos;); }; Thread t1 = new Thread(r1); t1.start(); } } 

出力:

 Thread is running...