无法将 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&lt;T&gt;.toArray(T[]) 的文档,您会发现它需要一个T 数组。在您的代码中,TIntegerint[] 不是 Integer[]

您必须将结果临时存储在 Integer[] 中,然后将结果一一转换为 int[](在这种情况下,您不妨完全避免使用 Integer[] 中间人)。

【讨论】:

实际上,如果您使用的是generics,则为Integer is unboxed to an int @hd1 是,但Integer[] 不是。数组不受装箱/拆箱。 谢谢,这是有道理的,我对 java 和一般编程很陌生。我未能区分原语和引用类型。我将原始数组更改为 Integer[] 而不是 int[] 并且该方法运行良好,感谢 Jason。

以上是关于无法将 ArrayList<Integer> 转换为 int[] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将整数添加到 ArrayList<Integer>

将 ArrayList<Integer> 转换为 int[] 的最快方法 [重复]

java如何将一个arraylist等量划分为5个新的arraylist集合?

Java - ArrayList<Integer>[][] 可能吗?

ArrayList<Integer> 接受字符串

ArrayList 的初始大小