例えばリストから特定の文字から始まる要素を抽出し、新しいリストを作る場合、従来であれば
List<hoge> hogeList = Arrays.asList("hoge", "foo", "bar"); List<newhoge> newhogeList = new ArrayList<>(); for(String element : hogeList){ if(element.startsWith("h")){ newhogeList.add(element); } }
とするのが(私の中もしくは初学者にとっては)普通である。
これをJavaのラムダ式やStreamインタフェースを利用すると、次のように書ける。
List<newhoge> newhogeList = element.stream() .filter(e -> e.startsWith("h")) .collect(Collectors.toList());
forやifといった記述がなく、望む処理(本質的な処理)のみが記述されているため、一目で何をしたい処理かわかる。
可読性に加えて保守性も向上しそう。
参考:
5分で読む入門編:Java 8 ラムダ式 コレクション編(2)リストの検索
ラムダ式とストリームAPIでJavaプログラミングはここまでシンプルになる!–Java SE 8に今すぐ移行すべき理由