2015-11-29 73 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了 –

相关问题