2015-11-29 101 views
4

我想的IntegerArrayList轉換爲Integer[]如何將列表<Integer>轉換爲java中的Integer []?

Integer[] finalResult = (Integer[]) result.toArray(); 

,但我得到了一個異常

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer; 

幫我個忙吧。

回答

7

您需要使用接受一個通用的論點的toArray()版本:

Integer[] finalResult = new Integer[result.size()]; 
result.toArray(finalResult); 

,或者作爲一個班輪:

Integer[] finalResult = result.toArray(new Integer[result.size()]); 
5

你不能投List到一個數組,因爲List不是數組。以下是將List<Integer>轉換爲Integer[]的兩種方法。

List<Integer> list = Arrays.asList(1, 2, 3); 
Integer[] arr = list.toArray(new Integer[list.size()]); 
Integer[] arr2 = list.stream().toArray(Integer[]::new); // Java 8 only 
2

List.toArray()返回Object數組。使用List.toArray(T[])代替:

Integer[] finalResult = (Integer[]) result.toArray(new Integer[result.size()]); 
+0

無需投。返回類型已經是'T []',它在編譯時被綁定到'Integer []'。 –

2

您需要初始化數組。試着這樣

Integer[] finalResult = new Integer[result.size()]; 
finalResult = result.toArray(finalResult); 
2

你可以做多種方式:

1日法

List<T> list = new ArrayList<T>(); 

T [] countries = list.toArray(new T[list.size()]); 

例如:

List<String> list = new ArrayList<String>(); 

list.add("India"); 
list.add("Switzerland"); 
list.add("Italy"); 
list.add("France"); 

String [] countries = list.toArray(new String[list.size()]); 

第二個方法

Foo[] array = new Foo[list.size()]; 
list.toArray(array); // fill the array 

第三屆方法

List<Integer> list = ...; 
int[] array = new int[list.size()]; 
for(int i = 0; i < list.size(); i++) array[i] = list.get(i); 

你也可以在這裏找到一些示例代碼 - http://www.tutorialspoint.com/java/util/arraylist_toarray.htmhttp://examples.javacodegeeks.com/core-java/util/list/java-list-to-array-example/

+1

您需要在第四種方法中刪除'myArray = new String();'。 –

+1

是的。刪除它。 –

+1

我從你的答案中瞭解了一種Java 8-list.stream的新方法。爲你的答案+1了 –

相關問題