当前位置: 首页 > 面试题库 >

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

漆雕嘉茂
2023-03-14
问题内容

我正在实现一个接口,该接口的功能类似于可以包含某种对象的表的功能。该接口指定以下功能

double[] getDoubles(int columnIndex);

在我的实现中,我感到很困惑的是,我将表数据存储在2D Object数组(Object[][] data)中。当我需要返回值时,我想执行以下操作(假定getDoubles()只在包含double的列上调用,因此将没有ClassCastExceptions):

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

但是-
Java不允许Object[]强制转换为double[]。将其Double[]强制转换为可以,因为它Double是一个对象,而不是基元,但是我的接口指定数据将以形式返回double[]

所以我有两个问题:

  1. 有什么办法可以从Object[][]表中获取列数据并返回原语数组?
  2. 如果我确实将接口更改为return Double[],会对性能产生影响吗?

问题答案:

不幸的是,Double如果要将其转换为,则需要遍历整个列表并将其取消装箱double[]

就性能而言,在Java中有一些时间与装箱和拆箱原语相关联。如果集合足够小,则不会出现任何性能问题。



 类似资料:
  • 问题内容: 我正在尝试用快速的语言编写BMI程序。我有一个问题:如何将字符串转换为Double? 在Objective-C中,我可以这样: 但是如何用Swift语言实现呢? 问题答案: Swift 4.2+字符串加倍 您应该使用新的类型初始值设定项在String和数字类型(Double,Float,Int)之间进行转换。它会返回一个可选类型(Double?),该类型将具有正确的值;如果String

  • 问题内容: 我是Java的新手,想知道double转换为int cast如何工作吗?我知道,只需将低32位转换为int就很容易了,但是将double(64位)转换为int(32位)呢?来自二进制的double中的那64位是Double- precision浮点格式(Mantissa),那么它如何在内部转换为int? 问题答案: 所有这些都记录在JLS的5.1.3节中。 第一步,将浮点数转换为lon

  • 问题内容: 点后如何将double转换为2? 例如: 我需要那个(在Java for Android中) 提前致谢 问题答案: x = Math.floor(x * 100) / 100;

  • 问题内容: 当我尝试将double数组转换为Double arrayList时,出现以下错误: 线程“主”中的异常java.lang.ClassCastException:[无法将D强制转换为java.lang.Double 下面是我的代码。 我正在将此列表与另一个列表进行比较,并将结果分配给另一个double变量。 请让我知道此错误的原因。 问题答案: las,不适用于原语。Apache com

  • 问题内容: 我们如何在Java中转换成?我有一个要求,我们必须使用Double作为参数,但是我们越来越明白了,所以我必须转换成。 问题答案: 您需要使用该方法从BigDecimal对象获取double值。

  • 问题内容: 所以我的问题是:为什么不执行编译错误? 问题答案: 四种情况中的三种正确报告了错误。复合分配是该规则的唯一例外。Java语言规范,第15.26.2部分,解释了以下原因: 15.26.2复合赋值运算符 形式的复合赋值表达式等效于,其中是的类型,不同之处在于该表达式仅被评估一次。 例如,以下代码是正确的: 并导致x的值为7,因为它等效于: 如您所见,通过隐式插入强制类型转换可以避免该错误。