array專(zhuān)題二:array與ArrayList的轉(zhuǎn)換(《corejava卷2》110頁(yè))

由于java平臺(tái)API的很大一部分都是在集合框架建立之前設(shè)計(jì)的,因此有時(shí)候需要在傳統(tǒng)的數(shù)組與現(xiàn)代的
集合之間進(jìn)行轉(zhuǎn)換。

*如果你有一個(gè)數(shù)組,就需要將它轉(zhuǎn)化為一個(gè)集合,Arrays.asList包裝器能夠?qū)崿F(xiàn)這個(gè)目的,例如:
String[] values=...;
HashSet<String> staff=new HashSet<String>(Arrays.asList(values));

*反過(guò)來(lái),如果要從集合得到數(shù)組,操作起來(lái)就稍微麻煩一些。當(dāng)然,你也可以直接使用toArray方法:
?Object[] values=staff.toArray();
?但是該方法運(yùn)行的結(jié)果是得到一個(gè)Object的數(shù)組。即使知道集合包含一組具體類(lèi)型的對(duì)象,也不能使用
?類(lèi)型轉(zhuǎn)換:
?String[] values=(String[])staff.toArray();//error!
?toArray方法返回的數(shù)組是一個(gè)Object[]數(shù)組,你無(wú)法改變它的類(lèi)型。相反,你必須使用toArray方法的
某種變體,為它賦予一個(gè)長(zhǎng)度為0的你要使用的類(lèi)型的數(shù)組。然后,返回的數(shù)組就是與該類(lèi)型相同的數(shù)組了。
?String[] values=staff.toArray(new String[0]);
?如果你愿意,你還可以構(gòu)建一個(gè)指定大小的數(shù)組:
?staff.toArray(new String[staff.size()]);
?在這種情況下,并沒(méi)有創(chuàng)建任何新的數(shù)組。