Java8 復習:Filter や Map を使ってみる

Java8 復習シリーズ。Stream API にもう少し踏み込んで、コレクションに対するデータ処理をしてみる。

import java.util.ArrayList;
import java.util.List;

public class Java8Filter {
  public static void main(String[] args) {
    // 大統領名リスト
    List<String> presidentsList = new ArrayList<String>(){{
      add("Richard Nixon");
      add("Gerald Ford");
      add("Jimmy Carter");
      add("Ronald Reagan");
      add("George Bush");
      add("Bill Clinton");
      add("George Bush");
      add("Barack Obama");
    }};
    
    // "G" から始まる人物を出力する
    presidentsList.stream()
                  .filter(president -> president.startsWith("G"))
                  .forEach(president -> System.out.println(president));
    
    // "G" から始まる人物の文字列の長さを合計してみる
    int count = presidentsList.stream()
                              .filter(president -> president.startsWith("G"))  // Filter で絞った Stream を返す
                              .mapToInt(president -> president.length())       // その Stream から Int の Stream を返す
                              .sum();                                          // Int の Stream を操作して結果を返す
    System.out.println(count);
  }  
}

Map 関連は Java の仕様を押さえて覚え直さないと。

ひとまずこんなことができるようになった、というところまで試してみて終わり。