【问题标题】:Converting ArrayList of Double to double[] [duplicate]将 Double 的 ArrayList 转换为 double[] [重复]
【发布时间】:2013-12-04 20:20:59
【问题描述】:

我正在将 Apache 数学库用于矩阵,这是我尝试使用的方法之一:

MatrixUtils.createRealDiagonalMatrix(double[] diagonal)

我不知道编译时的大小,所以我使用ArrayList<Double> 来存储对角线,稍后我想将它作为参数传递给上述函数。如何将 ArrayList 转换为 double[] ?我试过了:

ArrayList<Double> arr = new ArrayList<Double>(n);
... // Populate arr
MatrixUtils.createRealDiagonalMatrix(arr.toArray(new Double[n]));

但我收到类型不匹配错误,因为 Double[] 和 double[] 不同。

【问题讨论】:

  • 更改您的方法以接受Double 数组。或者将Double 数组转换为double 数组,注意不要包含null 引用。
  • @SotiriosDelimanolis 不是我的方法。外部库

标签: java


【解决方案1】:

你可以使用ArrayUtils.toPrimitive(double[]):

double[] diagonal = ArrayUtils.toPrimitive(arr.toArray(new Double[arr.size()]));

【讨论】:

    【解决方案2】:

    如果您可以使用 3rd 方库,我建议您试试 guava 库。它有很多有用的功能,您的情况可以通过以下方式处理:

    List<Double> data = new ArrayList<Double>(); // your data
    MatrixUtils.createRealDiagonalMatrix(Doubles.toArray(data));
    

    参考javadoc

    【讨论】:

      猜你喜欢
      • 2016-10-10
      • 2015-10-22
      • 2020-06-22
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      相关资源
      最近更新 更多