ソフトウェアエンジニアの日常の雑記

日々思ったことをまとめます

Java8 - lambda式 1 -

Java8の目玉機能であるLambda式をちょっと書いてみた

下記でやっていることはListに文字列を追加して、先頭が"a"のものだけ抜き出すというものをやっている

import java.util.ArrayList;

public class SampleStream {
	public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("a0");
        list.add("a1");
        list.add("b0");
        list.add("b1");
        
        java7(list);
        java8(list);
    }
	
	public static void java7(ArrayList<String> list){
	    System.out.println("java7");
        for (String string : list) {
            if(string.startsWith("a")){
                System.out.println(string);
            }
        }
    }

    public static void java8(ArrayList<String> list){
        System.out.println("java8");
        list.stream()
        .filter(e -> e.startsWith("a"))
        .forEach(e -> System.out.println(e));
    }
}

それぞれ、Java7までの実装とJava8の実装を書いてみる。
Java7の方が慣れ親しんだJavaの書き方だが、Java8の方がスッキリしている。Java8だと

  filter(e -> e.startWith("a"))

のように書けるのがとても便利である。
特に内部クラス、匿名クラスとかでこのようにかけるとGUI等のときによく書いていたところがすっきりするようになる。