2017-07-29 59 views
1

ArrayListcollection與元素 - [10, 20, 30]java的轉換UnmodifiableRandomAccessList到陣列

當我使用

(collection).toArray(new Integer[0]) 

一切工作正常。

但有時我必須將UnmodifiableRandomAccessListcollection轉換爲數組。

enter image description here

所以,當我使用相同的代碼:

(collection).toArray(new Integer[0]) 

我收到異常:

java.lang.ArrayStoreException 
    at java.util.ArrayList.toArray(ArrayList.java:407) 
    at java.util.Collections$UnmodifiableCollection.toArray(Collections.java:1034) 

如何正確地轉換集合在這種情況下?是否有任何收集類型不可知的toArray()方法實現(例如在Apache共享)?

+2

如何這些集合聲明? –

+3

'Collection.toArray()'拋出'ArrayStoreException' - 如果指定數組的運行時類型不是該集合中每個元素的運行時類型的超類型 – saka1029

回答

1

您始終可以通過Stream將任何類型的集合轉換爲數組。

Integer[] intArray = collection.stream().toArray(Integer[]::new);