寻找一种更好的方法将ArrayList <double>转换为double []数组</double>

时间:2011-10-04 15:19:27

标签: java

我一直在寻找将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可以做我想要的。但在这种情况下,我会为我的项目带来额外的复杂性,这不是我想要看到的。谁能给我一个更好的解决方案?

4 个答案:

答案 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;
    }