java - 如何在 Java 中将 ArrayList 转换为 Array 然后返回它?

标签 java arrays arraylist

我正在尝试创建一种方法,该方法创建给定数字的质因数列表,然后将它们返回到数组中。除了 ArrayList 到 Array 的转换之外,一切似乎都工作正常。另外,我不确定我是否正确返回了数组。

这是我的代码...

static int[] listOfPrimes(int num) {
    ArrayList primeList = new ArrayList();
    int count = 2;
    int factNum = 0;

    // Lists all primes factors.
    while(count*count<num) {
        if(num%count==0) {
            num /= count;
            primeList.add(count);
            factNum++;
        } else {
            if(count==2) count++;
            else count += 2;
    }
}
int[] primeArray = new int[primeList.size()];
primeList.toArray(primeArray);
return primeArray;

当我编译时它返回此错误消息...

D:\JAVA>javac DivisorNumber.java
DivisorNumber.java:29: error: no suitable method found for toArray(int[])
            primeList.toArray(primeArray);
                     ^
method ArrayList.toArray(Object[]) is not applicable
  (actual argument int[] cannot be converted to Object[] by method invocatio
n conversion)
method ArrayList.toArray() is not applicable
  (actual and formal argument lists differ in length)
Note: DivisorNumber.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

此外,我不确定如何接收返回的数组,因此我也需要一些帮助。谢谢!

最佳答案

如果您想使用通用的 toArray()方法,您需要使用 Integer包装类而不是原始类型int .

Integer[] primeArray = new Integer[primeList.size()];
primeList.toArray(primeArray);

编译器给出的错误指出您要调用的方法 ( List#toArray(T[]) ) 不适用于 int[] 类型的参数,只是因为 int不是Object (它是一个原始类型)。安Integer Object但是,包装 int (这是 Integer 类存在的主要原因之一)。

当然你也可以迭代 List手动并添加 Integer其中的元素为 int s 在数组中。

这里有一个相关的问题:How to convert List to int[] in Java?还有很多其他建议(Apache commons、 Guava ……)

关于java - 如何在 Java 中将 ArrayList 转换为 Array 然后返回它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19444934/

相关文章:

c - 显示此符号 ╠ 而不是所需字符

java - 元素在 Arraylist 的迭代过程中丢失

java - Docker:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致 "exec:\"java\": executable file not found in $PATH"

java - 如何排序忽略大写的数组?

javascript - array.push() 重复相同的值

java - 初始化 map 、列表等

java - ArrayList 的 remove(object) 给出 IndexOutOfBoundsException

PHP 中类 Java 的集合

java - 获取预签名 URL 时应用程序在 firestick 2nd gen 上崩溃

java - 如何仅使用数组和循环(没有其他方法)来删除 null?