繁体   English   中英

如何将java ArrayList 转换为数组?

[英]How to convert java ArrayList to an array?

我有一个像这样创建的 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()]);
    }
}

但是,我收到一个错误:

(错误:(16, 39)java:不兼容的类型: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值。

  3. 你得到这个:

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

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

     Double[] list2 = list1.toArray();

    您似乎已经在您发布的代码中更正了这一点。 但是 no-args toArray方法返回一个包含列表内容的Object[]

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

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

令人惊讶的是,对toArray进行编码的最佳(最有效)方法是:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM