Java 11
インターフェイスの新しいデフォルトtoArray
メソッドをCollection
使用すると、コレクションの要素を、目的のランタイムタイプの新しく作成された配列に転送できます。それはとりIntFunction<T[]> generator
引数としてとして使用することができます。
String[] array = set.toArray(String[]::new);
すでに同様のメソッドがCollection.toArray(T[])
あり、この追加はnull
メソッドへの参照があいまいになるため、引数として渡すことができなくなりました。ただし、どちらの方法でもNPEがスローされるため、問題はありません。
Java 8
Java 8では、ストリームAPIを使用できます。
String[] array = set.stream().toArray(String[]::new);
オーバーロードされたバージョンのtoArray()を使用することもできますIntFunction<A[]> generator
。
String[] array = set.stream().toArray(n -> new String[n]);
ここでのジェネレーター関数の目的は、整数(目的の配列のサイズ)を取り、目的のサイズの配列を生成することです。私は個人的には、ラムダ式を使用する後者の方法よりも、メソッド参照を使用する前者の方法を好みます。
toArray()
Javadocに明確に記載されているメソッドを使用します。