我需要转换我的列表:
List<Double> listFoo = new LinkedList<Double>();
到一个双精度数组。所以我尝试了:
double[] foo = listFoo.toArray();
但我得到了错误:
Type mismatch: cannot convert from Object[] to double[]
我怎样才能避免这种情况?我可以遍历列表并逐步创建数组,但我不想这样做。
我需要转换我的列表:
List<Double> listFoo = new LinkedList<Double>();
到一个双精度数组。所以我尝试了:
double[] foo = listFoo.toArray();
但我得到了错误:
Type mismatch: cannot convert from Object[] to double[]
我怎样才能避免这种情况?我可以遍历列表并逐步创建数组,但我不想这样做。
您不能使用标准 List 类的 toArray() 方法创建基元数组。您可以做的最好的事情是使用通用方法toArray( T[] )创建一个 Double[] 。
Double[] foo = listFoo.toArray( new Double[ listFoo.size() ] );
制作 double[] 的一种简单方法是使用Guava 的 Doubles 类。
double[] foo = Doubles.toArray( listFoo );
你需要做一个通用的
Double[] foo = listFoo.toArray(new Double[listFoo.size()]);
那将是最快的方法。
使用new Double[listFoo.size()]
(使用数组大小)您将重用该对象(通常它用于对方法进行通用调用toArray
)。
如果您制作foo
一个数组Doubles
而不是doubles
(一个是类,另一个是原始类型),它应该可以工作。