3

我需要转换我的列表:

List<Double> listFoo = new LinkedList<Double>();

到一个双精度数组。所以我尝试了:

double[] foo = listFoo.toArray();

但我得到了错误:

Type mismatch: cannot convert from Object[] to double[]

我怎样才能避免这种情况?我可以遍历列表并逐步创建数组,但我不想这样做。

4

3 回答 3

3

您不能使用标准 List 类的 toArray() 方法创建基元数组。您可以做的最好的事情是使用通用方法toArray( T[] )创建一个 Double[] 。

Double[] foo = listFoo.toArray( new Double[ listFoo.size() ] ); 

制作 double[] 的一种简单方法是使用Guava 的 Doubles 类

double[] foo = Doubles.toArray( listFoo );
于 2013-05-31T13:24:19.693 回答
3

你需要做一个通用的

Double[] foo = listFoo.toArray(new Double[listFoo.size()]);

那将是最快的方法。

使用new Double[listFoo.size()](使用数组大小​​)您将重用该对象(通常它用于对方法进行通用调用toArray)。

于 2013-05-31T13:24:42.050 回答
1

如果您制作foo一个数组Doubles而不是doubles(一个是类,另一个是原始类型),它应该可以工作。

于 2013-05-31T13:24:49.113 回答