Java技巧:集合和陣列的轉換
阿新 • • 發佈:2018-12-27
由於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()]);
在這種情況下,並沒有建立新的陣列。