Java
JavaDay 19

Java Stream APIチートシート

More than 1 year has passed since last update.

Stream超便利。Stream正義、そしてStreamすぐ忘れる。ということでチートシートを作成しました。
よろしくご査収ください。

全てに処理を行う(List編)

Arrays.asList("ほんと", "世の中", "世知辛い").stream().forEach(s -> System.out.println(s));
Arrays.asList("まじまじ", "ホント", "世知辛い").stream().forEach(System.out::println);

全てに処理を行う(Map編)

Collections.emptyMap().entrySet()
  .forEach(e -> System.out.println(e.getKey() + ":" + e.getValue()));

特定のものだけ処理を行う。

Arrays.asList("恋", "愛", "金", "夢").stream()
  .filter(s -> s.equals("愛")).forEach(System.out::println);

型変換する。

Arrays.asList("1", "2", "3", "5").stream()
  .map(s -> Integer.valueOf(s)).forEach(System.out::println);

特定範囲の数字に対して処理する。

IntStream.range(0, 10).map(i -> i*2).toArray();

List→Mapにする。

Arrays.asList("SU-METAL DEATH!", "YUIMETAL DEATH!", "MOAMETAL DEATH!").stream()
  .map(s -> s.split(" ",2)).filter(a -> 2 == a.length)
  .collect(Collectors.toMap(a->a[0], a->a[1]));

マルチスレッドで高速に処理する。

Arrays.asList("恋", "愛", "金", "夢").parallelStream()
  .findFirst(s -> s.equals("愛"));

List結合

Arrays.asList("愛,それは,甘く","愛,それは,強く","愛,それは,尊く").stream()
  .map(s -> s.split(",")).flatMap(a -> Arrays.asList(a).stream())
  .collect(Collectors.toList());

長くなったら変数化。

Function<String, String> toHakata = s -> {
    return s + "とよ。";
};
Arrays.asList("そぎゃんこつなか").stream().map(toHakata);

他にもあったら

コメント、プルリクください。