[英]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>
没有成功。 如何正确操作? 我知道我的问题可能是非常基本的问题。
问题是你做错了很多事情:
ArrayList list1 = new ArrayList();
不正确,因为您使用的是原始类型。 您应该为此收到编译器警告。
鉴于之前的list1.add(0, 5)
是不正确的。 5
将被装箱为一个Integer
因为该编译器不知道该列表应该只包含Double
值。
你得到这个:
(Error:(16, 39) java: incompatible types: java.lang.Object[] ).
因为你一定做过这样的事情:
Double[] list2 = list1.toArray();
您似乎已经在您发布的代码中更正了这一点。 但是 no-args toArray
方法返回一个包含列表内容的Object[]
。
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.