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等のときによく書いていたところがすっきりするようになる。