无法将 ArrayList<Integer> 转换为 int[] [重复]
Posted
技术标签:
【中文标题】无法将 ArrayList<Integer> 转换为 int[] [重复]【英文标题】:cannot convert ArrayList<Integer> to int[] [duplicate] 【发布时间】:2014-04-30 09:27:15 【问题描述】:import java.util.*;
public class Tester2
public static void main(String[] args)
int[] array = new int[] 1,2,3,1,2,3;
System.out.println(Arrays.toString(deleteElement(array, 1)));
public static int[] deleteElement(int [] array, int target)
ArrayList<Integer> a1 = new ArrayList<Integer>();
for(int i=0; i<array.length; i++)
if (array[i] != target)
a1.add(array[i]);
int[] returnedArray = new int[a1.size()];
returnedArray = a1.toArray(returnedArray);
return returnedArray;
当我尝试编译此代码时,我收到以下错误:
发现 1 个错误:
文件:/Users/Hyeunjoon/Desktop/CS/A4/Tester2.java [行:25]
错误:/Users/Hyeunjoon/Desktop/CS/A4/Tester2.java:25: 找不到符号
符号:方法 toArray(int[])
位置:类 java.util.ArrayList
谁能帮帮我?我不明白为什么我会收到此错误
【问题讨论】:
错误信息的哪一部分你不明白?您需要知道的一切都在此处列出。 【参考方案1】:忽略其他可能的改进,您有:
returnedArray = a1.toArray(returnedArray);
如果您查看ArrayList<T>.toArray(T[])
的文档,您会发现它需要一个T
数组。在您的代码中,T
是 Integer
。 int[]
不是 Integer[]
。
您必须将结果临时存储在 Integer[]
中,然后将结果一一转换为 int[]
(在这种情况下,您不妨完全避免使用 Integer[]
中间人)。
【讨论】:
实际上,如果您使用的是generics,则为Integer is unboxed to an int @hd1 是,但Integer[]
不是。数组不受装箱/拆箱。
谢谢,这是有道理的,我对 java 和一般编程很陌生。我未能区分原语和引用类型。我将原始数组更改为 Integer[] 而不是 int[] 并且该方法运行良好,感谢 Jason。以上是关于无法将 ArrayList<Integer> 转换为 int[] [重复]的主要内容,如果未能解决你的问题,请参考以下文章
将 ArrayList<Integer> 转换为 int[] 的最快方法 [重复]
java如何将一个arraylist等量划分为5个新的arraylist集合?