如何将Java ArrayList转换为数组?

问题描述 投票:0回答:1

我有一个这样创建的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>

没有成功。怎么做呢?我知道我的问题可能是非常基本的问题。

java arrays arraylist
1个回答
1
投票

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

  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();
    

    您似乎已纠正了所发布代码中的问题。

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

    正确的版本是带有空菱形的ArrayList<Double> list1 = new ArrayList<>();

© www.soinside.com 2019 - 2024. All rights reserved.