繁体   English   中英

如何将原始双精度数组转换为双精度数组

[英]How to convert primitive double array to Double array

使用Apache通用数学库,我可以获得原始的double数组。

  RealMatrix pInverse = new LUDecomposition(p).getSolver().getInverse();

  double[][] temp = pInverse.getData();

我需要将temp转换为Double[][]

  Double[][] inverse = new Double[][]temp;

如果您使用的是Java 8+,则可以使用:

Double[][] inverse = Arrays.stream(temp)
        .map(d -> Arrays.stream(d).boxed().toArray(Double[]::new))
        .toArray(Double[][]::new);

由于您已经在使用Apache Commons ,可能值得指出ArrayUtils.toObject

将原始双精度数组转换为对象。

使用它,您可以将Andreas的第一个解决方案编写为

Double[][] inverse = new Double[temp.length][];
for (int i = 0; i < temp.length; i++) {
    inverse[i] =  ArrayUtils.toObject(temp[i]);
}

YCF_L的解决方案

Double[][] inverse = Arrays.stream(temp)
    .map(ArrayUtils::toObject)
    .toArray(Double[][]::new);

这是一组简单的嵌套循环:

Double[][] inverse = new Double[temp.length][];
for (int i = 0; i < temp.length; i++) {
    inverse[i] = new Double[temp[i].length];
    for (int j = 0; j < temp[i].length; j++)
        inverse[i][j] = temp[i][j];
}

如果您知道所有子数组的大小都相同,则它会更短:

Double[][] inverse = new Double[temp.length][temp[0].length];
for (int i = 0; i < temp.length; i++)
    for (int j = 0; j < temp[0].length; j++)
        inverse[i][j] = temp[i][j];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM