java - 如何将 java ArrayList 转换为数组?

标签 java arrays arraylist

我有一个这样创建的 ArrayList:

public class Main {

    public static void main(String[] args) {
        // write your code here
        ArrayList list1 = new ArrayList();

        list1.add(0, 5);
        list1.add(1, 3.5);
        list1.add(2, 10);

    }
}

我正在尝试使用 toArray 方法从中创建一个数组:

public class Main {

    public static void main(String[] args) {
        // write your code here
        ArrayList list1 = new ArrayList();

        list1.add(0, 5);
        list1.add(1, 3.5);
        list1.add(2, 10);

        Double[] list2 = list1.toArray(new Double[list1.size()]);
    }
}

但是,我收到一个错误:

(Error:(16, 39) java: incompatible types: java.lang.Object[] ).

所以我尝试将右侧转换为双倍:

Double[] list2 = (Double[]) list1.toArray(new Double[list1.size()])

这次我在线程“main”中遇到异常。我还尝试从一开始就将我的 ArrayList 声明为 double:

ArrayList<double> list1 = new ArrayList()<double>

没有成功。如何正确地做到这一点?我知道我的问题可能是非常基本的。

最佳答案

问题是你做错了很多事情:

  1. ArrayList list1 = new ArrayList();不正确,因为您使用的是原始类型。你应该得到一个编译器警告。

  2. 鉴于之前的 list1.add(0, 5)是不正确的。 5将装箱为 Integer因为那个编译器不知道该列表只应该包含 Double值(value)观。

  3. 你得到这个:

    (Error:(16, 39) java: incompatible types: java.lang.Object[] ).
    

    因为你一定做过这样的事情:

    Double[] list2 = list1.toArray();
    

    您似乎已在发布的代码中更正了该问题。但是没有参数 toArray方法返回 Object[]包含列表内容。

  4. ArrayList<double> list1 = new ArrayList()<double>是不正确的,因为您不能将基本类型用作泛型类型参数,并且 RHS 上的语法是错误的。

    正确的版本是ArrayList<Double> list1 = new ArrayList<>();有一个空钻石。

令人惊讶的是,编写 toArray 的最佳(最有效)方式是:

Double[] list2 = list1.toArray(new Double[0]);

显然,如果它自己分配数组,实现能够更快地初始化数组。 (或者我听说...)

关于java - 如何将 java ArrayList 转换为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59225396/

相关文章:

java - 前台通知上的动态图像资源无法正常工作

java - "Cannot be cast to java.lang.Class",即: which type is not a class

javascript - 从 forEach 循环中的第二项开始

java - 如何从测试器类访问/更改 ArrayList?

java - 如果使用 java 条件失败则跳过读取行

java - 使用静态方法比导入整个类便宜吗?

java - 当我尝试构建 MatJuice 时出现 2 个编译错误(找不到符号和不兼容的类型)

php - 如果相应的值至少为 5 次迭代,则移动数组有重复

javascript - 如何使用 HTML 元素设置动态 JavaScript 数组,然后为其设置属性

java - 删除数组列表中的项目