如何在Java中将List<Integer>转换为Integer[]?

7
我正在尝试将一个 ArrayListInteger 转换为 Integer[]
Integer[] finalResult = (Integer[]) result.toArray();

但是我收到了一个异常

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

请帮我一个忙。

6个回答

10
你需要使用接受泛型参数的 toArray() 版本。
Integer[] finalResult = new Integer[result.size()];
result.toArray(finalResult);

或者,作为一行代码:
Integer[] finalResult = result.toArray(new Integer[result.size()]);

6

由于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

3

List.toArray() 方法返回一个 Object 数组。建议使用 List.toArray(T[]) 方法代替:

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

不需要强制转换。返回类型已经是T[],在编译时绑定为Integer[] - Ted Hopp

2

您需要初始化数组。可以尝试以下方式:

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

2
你可以用多种方法实现它:
第一种方法
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.htm 或者 http://examples.javacodegeeks.com/core-java/util/list/java-list-to-array-example/


1
你需要在第四个方法中摆脱 myArray = new String(); 这行代码。 - Paul Boddington
1
我从你的回答中了解到了Java 8-list.stream的新方法。因此我给你点赞了。 - Tejus Prasad

0
这里的答案在toArray()方法中使用了list.size(),但实际上并不需要。你可以直接传递一个大小为0的空整数数组。
这很简单易懂。看一下这个例子:
List<Integer> yourList = List.of(1, 2, 3, 4, 5);
Integer[] intArray = yourList.toArray(new Integer[0]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接