2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[初心者向け]Java8ラムダの基本をサクッと理解する

Last updated at Posted at 2017-10-23

この記事は?

世間ではすでにJava9がリリースされていますが、Java8で追加されたラムダ式をもう一度おさらいしたい人のための記事です。自分用まとめも兼ねてます。
間違いなどあったら指摘していただけるとありがたいです!

ラムダ、ラムダ式とは?

Java8で変更された大きな点がラムダ式です。
もともと数学では「関数を変数のように扱って演算する」と言う考え方があり、その変数としてよくλ(ラムダ)と言う名称が使われているとのこと。
この数学的な考え方をJavaでも取り入れたのがJavaのラムダ式で、意味合いとしては「値として扱える関数の表現」といったものというのがわかりやすいと思います。

例えば以下のようなコードを指します。

(p) -> (p.getAge()) < 30)

これは関数にpを入れるとpの年齢が30未満かが返ってくることを表す式です。

ラムダ式を書いてみよう

サンプルとなるラムダ式を書いて、そのコードを分解してくことでラムダ式を理解していきましょう。

LambdaSample.java
public class LambdaSample {
    public static void main(String[] args) {
        Runnable r = () -> System.out.println("Hello Lambda!");
        r.run();
    }
}

上の例を実行してみると以下のような結果が出力されます。
Hello Lambda!

ラムダ式で書かれたコードは以下です。

() -> System.out.println("Hello Lambda!")

ラムダ式をJDK8以前の書き方で書いてみると・・・

このLambdaSample.javaをJDK8以前の書き方をすると以下のようになります。

RunnableSample.java
public class RunnableSample {
    public static void main(String[] args) {
       Runnable r = new Runnable() {
           @Override
           public void run() {
               System.out.println("Before Lambda!");
           }
       };
        r.run();
    }
}

LambdaSample.javaでは以下の部分をラムダ式に置き換えています。

JDK8以前
new Runnable() {
           @Override
           public void run() {
               System.out.println("Before Lambda!");
           }
       }
JDK8
() -> System.out.println("Hello Lambda!")

コード量がだいぶ減りましたね。

このJDK8以前で書かれているコードは「無名クラス(匿名クラス)」とも言います。
つまりラムダ式とは「インターフェースを実装した無名クラスのオブジェクトを書き換えたもの」と言えます。

参考図書・サイト

http://java-code.jp/106
https://qiita.com/sanotyan1202/items/64593e8e981e8d6439d3
Java8ではじめる「ラムダ式」
Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?