型付きストリームのtoArray
メソッド参照を使ってストリームを型付き配列に変換する。
コード比較
✕ Pre-Streams
List<String> list = getNames();
String[] arr = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
arr[i] = list.get(i);
}
✓ Java 8+
String[] arr = getNames().stream()
.filter(n -> n.length() > 3)
.toArray(String[]::new);
このコードに問題がありますか? お知らせください。
モダンな方法が優れている理由
型安全
Object[]のキャストなしで、配列の型が正確です。
連鎖可能
任意のストリームパイプラインの末尾で動作します。
簡潔
手動ループを1つの式に置き換えます。
旧来のアプローチ
手動配列コピー
モダンなアプローチ
toArray(ジェネレータ)
JDKバージョン
8
難易度
初級
JDKサポート
型付きストリームのtoArray
利用可能
JDK 8(2014年3月)以降、広く利用可能
仕組み
toArray(IntFunction)メソッドはストリームから適切に型付けされた配列を作成します。ジェネレータ(String[]::new)は、ストリームが作成する配列の型を指定します。
関連ドキュメント