我试图将ArrayList
Integer
转换为Integer[]
Integer[] finalResult = (Integer[]) result.toArray();
但我得到了一个例外
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
请帮帮我。
答案 0 :(得分:8)
您需要使用接受通用参数的toArray()
版本:
Integer[] finalResult = new Integer[result.size()];
result.toArray(finalResult);
或者,作为一个单行:
Integer[] finalResult = result.toArray(new Integer[result.size()]);
答案 1 :(得分: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 :(得分:2)
List.toArray()返回一个Object数组。请改用List.toArray(T[]):
Integer[] finalResult = (Integer[]) result.toArray(new Integer[result.size()]);
答案 3 :(得分:2)
您需要初始化数组。试试这个
Integer[] finalResult = new Integer[result.size()];
finalResult = result.toArray(finalResult);
答案 4 :(得分:2)
你可以通过多种方式实现这一目标:
第一种方法
abstract class Ar {
abstract int add(int a, int b);
}
class Adder extends Ar {
int add(int a,int b){
return a+b;
}
public static void main(String[] args)
{
Adder a = new Adder();
}
}
class Sol {
public static void main(String atgs[])
{
Adder aa = new Adder();
System.out.println(aa.getClass().getSuperclass().getSimpleName());
System.out.println(aa.add(10, 10));
}
}
示例:
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
您还可以在此处找到一些示例代码 - http://www.tutorialspoint.com/java/util/arraylist_toarray.htm或http://examples.javacodegeeks.com/core-java/util/list/java-list-to-array-example/
答案 5 :(得分:0)
这里的答案是在 list.size()
方法中使用 toArray()
出于某种根本不需要的原因。您可以只传递一个大小为 0 的空整数数组。
简单易行。看一看:
List<Integer> yourList = List.of(1, 2, 3, 4, 5);
Integer[] intArray = yourList.toArray(new Integer[0]);