2016-01-20 50 views
0

我想将一个双打ArrayList的双打数组。当我尝试使用以下行投它:麻烦铸造Arraylist到双重为了使一个双打数组

double[] hist_list = hist_array.Cast<Double>().toArray(); 

我得到以下语法错误:

Syntax error on token "(", Expression expected after this token 

和错误是第一个括号,在铸造后。在这种情况下,Cast()似乎是一个没有争议的方法,那么这里出了什么问题?

回答

0

这是你如何做到这一点:

ArrayList<Double> l = new ArrayList<Double>(); 
Object[] returnArrayObject = l.toArray(); 
double returnArray[] = new double[returnArrayObject.length]; 
for (int i = 0; i < returnArrayObject.length; i++){ 
    returnArray[i] = (Double) returnArrayObject[i]; 
} 
+0

啊,我希望避免一个混乱的解决方案。谢谢! – 1385wz

+0

不幸的是,你将不得不这样做。我不认为你可以直接转换它。 –

1

你不能简单的将其转换为一个基本类型double数组,但你可以很容易地将其转换为双[]数组,像这样:

Double[] doubleArray = hist_array.toArray(new Double[hist_array.size()]); 
+0

根据这个最近的分析http://shipilev.net/blog/2016/arrays-wisdom-ancients/,通过'新的Double [0]'而不是预先大小的数组通常会更高效。几乎肯定不重要,但有趣的是要注意。 – guitarsteve