Streamと配列の変換

最近はExercismでJavaの練習をしているのだけど、Streamの扱いで少しハマったので頭を整理して定着させるためにブログを書いておきたい。

String[] acronym(String text) {
  return Arrays
    .stream(text.split(" "))
    .map(word -> word.substring(0, 1).toUpperCase())
    .toArray(String[]::new);
};
  • Arrays.stream()Stream.of()で配列からStreamへ変換できる。
  • toArray()でStreamから配列へ変換できる。ただし、引数を指定しないとObject[]を返すため、IntStreamを渡す必要がある。IntStreamは配列のサイズを表すintegerを受け取ってStreamの要素の型の配列を返す関数で、この例だとString[]::newにあたる。