我一直在寻找将ArrayList转换为double []数组的解决方案。在阅读了同一问题的几个问题后,我找到了解决方案。这就是我现在的工作方式。
public static double[] listToArray(List<Double> arr){
double[] result = new double[arr.size()];
Iterator<Double> itr = arr.iterator();
int i = 0 ;
while(itr.hasNext()){
try{
result[i] = Double.parseDouble(itr.next().toString());
i++;
}catch(IndexOutOfBoundsException e){
System.out.println("OutOfBouds");
}
}
return result;
}
这是一种相当令人讨厌的方式。我知道有一些API可以做我想要的。但在这种情况下,我会为我的项目带来额外的复杂性,这不是我想要看到的。谁能给我一个更好的解决方案?
答案 0 :(得分:9)
public static double[] listToArray(List<Double> arr){
double[] result = new double[arr.size()];
int i = 0;
for(Double d : arr) {
result[i++] = d.doubleValue();
}
return result;
}
答案 1 :(得分:1)
嗯,有:.toArray()
但是这会得到一个Double对象数组。
尝试:
ArrayList<Double> objList;
double[] primList = new double[objList.size()];
for (int i =0; i < objList.size(); ++i)
primList[i] = objList.get(i);
答案 2 :(得分:1)
double[] test(final List<Double> sourcelist) {
if (sourcelist==null) {
return null;
}
double[] array = new double[sourcelist.size()];
int i = 0;
for (Double value : sourcelist) {
if (value == null) {
array[i++] = 0D; // or some other null representation
} else {
array[i++] = value.doubleValue();
}
}
return array;
}
答案 3 :(得分:0)
以下是Apache Commons Lang的行为方式
org.apache.commons.lang.ArrayUtils:
public static double[] toPrimitive(Double[] array) {
if (array == null) {
return null;
} else if (array.length == 0) {
return EMPTY_DOUBLE_ARRAY;
}
final double[] result = new double[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = array[i].doubleValue();
}
return result;
}