java - 如何将 Double[] 转换为 double[]?

标签 java arrays autoboxing

我正在实现一个接口(interface),它的功能类似于可以包含一种对象类型的表。接口(interface)指定如下函数:

double[] getDoubles(int columnIndex);

让我感到困惑的是,在我的实现中,我将表数据存储在二维 Object 数组(Object[][] data)中。当我需要返回值时,我想做以下事情(假设 getDoubles() 只会在包含 double 的列上调用,所以不会有 ClassCastExceptions):

double[] getDoubles(int columnIndex) {
    return (double[]) data[columnIndex];
}

但是 - Java 不允许将 Object[] 强制转换为 double[]。将其转换为 Double[] 是可以的,因为 Double 是一个对象而不是原始类型,但我的界面指定数据将作为 double[]

所以我有两个问题:

  1. 有什么方法可以从 Object[][] 表中获取列数据并返回基元数组?
  2. 如果我将接口(interface)更改为返回 Double[],会对性能产生影响吗?

最佳答案

如果您不介意使用 3rd 方库,commons-lang 有 ArrayUtils 类型和各种操作方法。

Double[] doubles;
...
double[] d = ArrayUtils.toPrimitive(doubles);

还有互补的方法

doubles = ArrayUtils.toObject(d);

编辑:回答剩下的问题。这样做会有一些开销,但除非数组真的很大,否则你不应该担心它。在重构之前先测试一下是否有问题。

实现您实际询问的方法会得到类似的结果。

double[] getDoubles(int columnIndex) {
    return ArrayUtils.toPrimitive(data[columnIndex]);
}

关于java - 如何将 Double[] 转换为 double[]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1109988/

相关文章:

Java For 循环差异

javascript - 如何向对象数组添加新字段,或将一个数组中的值插入另一个数组 - JS

java - 自动装箱无法正常工作

关于自动装箱和对象相等性/同一性的 Java 问题

java - Java 格式的 JFileChooser 路径

java - 如果一个元素是递归 boolean 语句中的数组成员,如何写出?

javascript - 解释为什么 Array.sort 这样做

更改数组中变量的值(C 编程)

java - 在条件语句中使用时 Boolean_val 与 Boolean.TRUE(Boolean_val)

java - 使用 Apache CXF DOSGi 进行身份验证和 session 管理