Listから配列への無駄のない変換
今日、ふと思ったこと。
よくJavaでListから配列への変換の方法としてこういうやり方が紹介されています。
list.toArray(new String[0]);
変換の際に型を指定する必要があるから、引数に中身が0個の配列を渡す。
でも、ここで生成しているオブジェクトはすぐに破棄されるので、とても無駄な気がします。
なので、
list.toArray(new String[list.size()]);
こうした方がいいような・・・。
これならば、ここで生成した配列にListの中身が入るので無駄がありません。
(JavaAPIには「指定された配列にリストが収まる場合は、その配列に返されます。」と記されています)
toArrayメソッド内部の、型を判定して新規に配列を生成して・・・とかの無駄も省けます。
toArrayメソッドが呼ばれているのでlistは確実にnullではないし、sizeメソッド分だけ確保するので余分なnullが入ることもありません。
でも、公式APIに例として挙げられている【List(Java Platform SE 6)】のは前者・・・?
なんで!?