toArray() returns 对象[]

toArray() returns object[]

我正在尝试使用 toArray() 将 ArrayList 转换为数组,但它 returns 是一个对象 [] 而不是 double[]。见下文:

double [] arr = arrList.toArray(new Double[arrList.size()]);

我收到不兼容类型错误。

这是 arrList 包含的内容:

I/System.out: [0.0, 2.455430030822754, 1.834529995918274, 0.7368429899215698, -0.5264459848403931, -1.5101100206375122, -1.8526500463485718, -1.6131700277328491, -0.9388419985771179, 0.053711701184511185, 0.35541099309921265, -0.18560799956321716, -0.884518027305603, -1.4304900169372559, -1.5486400127410889, -0.943471014499, 0.0]

是这样得到的:

private void rec(SensorEvent event) {

    double x = event.values[0];

    arrList.add(x);

}

我试过不调整数组的大小(即使用新的 Double[0]),虽然我认为这不是问题,但也没有用。

我在网上查找了类似的问题,但我发现的都是关于 String 的示例,我想 Double 可能是问题所在?不太确定。

这方面很新,如果明显的话,我们深表歉意。

您可以使用:

Double[] array = arrList.toArray(Double[]::new);

注意,在java8中引入了方法引用,在java11中引入了方法。请参考Code-Apprentice对java7编译解决方案的回答。

double [] arr = arrList.toArray(new Double[arrList.size()]);

double[]Double[] 是不同的类型。虽然 Java 可以通过自动装箱和自动拆箱在 doubleDouble 之间转换,但它不能从 Double[] 转换为 double[]。您可以通过以下方式解决问题:

Double [] arr = arrList.toArray(new Double[arrList.size()]);