集合轉數組 數組長度爲0 ===1

Collection的公有方法中,toArray()是比較重要的一個。
但是使用無參數的toArray()有一個缺點,就是轉換後的數組類型是Object[]。 雖然Object數組也不是不能用,但當你真的想用一個具體類型的數組,比如String[]時,問題就來了。而把Object[]給cast成String[]還是很麻煩的,需要用到這個:

String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);

不管是從哪方面看還是一開始就弄成String[]比較好。

具體怎麼辦呢?其實用帶參數的toArray就好了。官方是這樣給出的例子:

String[] a = c.toArray(new String[0]);

像 toArray 方法一樣,此方法充當了基於數組的 API 與基於 collection 的 API 之間的橋樑。更進一步說,此方法允許在輸出數組的運行時類型上進行精確控制,並且在某些情況下,可以用來節省分配開銷。

假定 l 是隻包含字符串的一個已知 List。以下代碼用來將該列表轉儲到一個新分配的 String 數組: 

     String[] x = (String[]) v.toArray(new String[0]);
 注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。 

<T> T[] toArray(T[] a);
泛型
會返回你一個list長度的String 類型的數組

需要一個T[] a,new String[0]相當於開闢了一個長度爲0的String[],並且指定了泛型。這樣函數的調用是將list轉換了一個String的數組。

這裏的用new String[0]只是爲了指定函數的形參數,最終返回的String[]的長度是由你的list存儲內容的長度決定了。

new String[0]就是起一個模板的作用,指定了返回數組的類型,0是爲了節省空間,因爲它只是爲了說明返回的類型

ArrayList.toArray()需要返回String [] “串對象數組” 類型,
要求調用參數也必須是 “串對象數組”,
new String[] 就是生生一個“串對象數組”,[0]表示元素個數爲零。


只是 一個類型標示,用來告訴toArray方法具體轉化成什麼類型。
list.toArray(new String[0]);//轉化成String數組

list.toArray(new int[0]);//轉化成int數組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章