Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在寻找转换ArrayList的更好方法<;双倍>;将[]数组加倍_Java - Fatal编程技术网

Java 正在寻找转换ArrayList的更好方法<;双倍>;将[]数组加倍

Java 正在寻找转换ArrayList的更好方法<;双倍>;将[]数组加倍,java,Java,我一直在寻找将ArrayList转换为double[]数组的解决方案。在阅读了关于同一问题的几个问题后,我想出了一个解决办法。我现在就是这样工作的 public static double[] listToArray(List<Double> arr){ double[] result = new double[arr.size()]; Iterator<Double> itr = arr.iterator(); int i = 0 ; whi

我一直在寻找将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;
  }
publicstaticdouble[]listToArray(List arr){
double[]结果=新的double[arr.size()];
迭代器itr=arr.Iterator();
int i=0;
while(itr.hasNext()){
试一试{
结果[i]=Double.parseDouble(itr.next().toString());
i++;
}catch(IndexOutOfBoundsException e){
System.out.println(“OutOfBouds”);
}
}      
返回结果;
}
这是一种相当恶劣的方式。我知道有些API可以做我想做的事情。但在这种情况下,我会给我的项目带来额外的复杂性,这不是我想要看到的。有谁能给我一个更好的解决方案吗
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;
}
double[]结果=新的double[arr.size()]; int i=0; 用于(双d:arr){ 结果[i++]=d.doubleValue(); } 返回结果; }
好吧,有:
.toArray()
但这将得到一个双对象数组

尝试:

arraylistobjlist;
double[]primList=新的double[objList.size()];
对于(int i=0;i
下面是如何做的

publicstaticdouble[]toPrimitive(double[]array){
if(数组==null){
返回null;
}else if(array.length==0){
返回空的双数组;
}
最终双精度[]结果=新双精度[array.length];
for(int i=0;i
双[]测试(最终列表源列表){
if(sourcelist==null){
返回null;
}
double[]数组=新的double[sourcelist.size()];
int i=0;
for(双值:sourcelist){
如果(值==null){
数组[i++]=0D;//或其他一些空表示形式
}否则{
数组[i++]=value.doubleValue();
}
}
返回数组;
}

您没有使用
ArrayList#toArray()
的任何原因?这将产生一个双(而不是双)数组。它给出了Double[],而不是Double[],我知道,这只是第一步。确切地说,我花了一些时间尝试这种方法,但我最终发现Double[]数组不能转换为Double[]这样做很麻烦,因为没有标准的java库或语言功能来实现这一点。但是,使用上述代码非常简单。
ArrayList<Double> objList;
double[] primList = new double[objList.size()];
for (int i =0; i < objList.size(); ++i)
   primList[i] = objList.get(i);
    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;
    }
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;
}