我有一个这样创建的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>
没有成功。怎么做呢?我知道我的问题可能是非常基本的问题。
问题是您做错了很多事情:
ArrayList list1 = new ArrayList();
不正确,因为您使用的是原始类型。您应该为此收到编译器警告。
鉴于先前的list1.add(0, 5)
不正确。 5
将被装箱为Integer
,因为该编译器不知道该列表仅应包含Double
值。
您有
(Error:(16, 39) java: incompatible types: java.lang.Object[] ).
因为您必须完成以下操作:
Double[] list2 = list1.toArray();
您似乎已纠正了所发布代码中的问题。
[ArrayList<double> list1 = new ArrayList()<double>
是不正确的,因为您不能将原始类型用作通用类型参数,并且RHS上的语法是错误的]
正确的版本是带有空菱形的ArrayList<Double> list1 = new ArrayList<>();
。