Collections 初級

メソッド参照を使ってストリームを型付き配列に変換する。

✕ Pre-Streams
List<String> list = getNames();
List<String> filtered = new ArrayList<>();
for (String n : list) {
    if (n.length() > 3) {
        filtered.add(n);
    }
}
String[] arr = filtered.toArray(new String[0]);
✓ Java 8+
String[] arr = getNames().stream()
    .filter(n -> n.length() > 3)
    .toArray(String[]::new);
このコードに問題がありますか? お知らせください。
🎯

型安全

Object[]のキャストなしで、配列の型が正確です。

🔗

連鎖可能

任意のストリームパイプラインの末尾で動作します。

📏

簡潔

手動ループを1つの式に置き換えます。

旧来のアプローチ
手動フィルタリング + コピー
モダンなアプローチ
toArray(ジェネレータ)
JDKバージョン
8
難易度
初級
型付きストリームのtoArray
利用可能

JDK 8(2014年3月)以降、広く利用可能

toArray(IntFunction)メソッドはストリームから適切に型付けされた配列を作成します。ジェネレータ(String[]::new)は、ストリームが作成する配列の型を指定します。