Javaのラムダ式・Streamインタフェースを利用したコレクションの処理

例えばリストから特定の文字から始まる要素を抽出し、新しいリストを作る場合、従来であれば

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に今すぐ移行すべき理由