由於Java平臺API的很大一部分都是在集合框架建立之前設計的,因此有時候需要在傳統的數組和現代的集合之間進行轉換。
如果你有一個數組,就需要將它轉化爲一個集合,Array.asList包裝器能夠實現這個目的,例如:
String[] values = ...;
HashSet<String> staff = new HashSet<String>(Array.asList(values));
反過來,如果要從集合得到數組,操作起來就稍微麻煩一下。當然,你也可以直接使用toArray方法:
Object[] values = staff.toArray();
但是該方法運行的結果得到一個對象的數組。即使知道集合包含一組具體類型的對象,也不能使用類型轉換:
String[] values = (String[])staff.toArray();//Error
toArray方法返回的數組是一個Object[]數組,你無法改變它的類型。相反你必須使用toArray方法的某種變體,爲它賦予一個長度爲0的你喜歡使用類型的數組。然後,返回的數組就是與該類型相同的數組了。
String[] values = staff.toArray(new String[0]);
如果你願意,還可以構建一個指定大小的數組:
staff.toArray(new String[staff.size()]);
在這種情況下,並沒有創建新的數組。