【问题标题】:Wrapping a double[] to a Double[]将 double[] 包装到 Double[]
【发布时间】:2015-03-19 22:23:38
【问题描述】:

我真的是java新手。我想出了一些我真的无法理解的事情。我知道 Double 是一个包装类,您可以在该类的对象中包装一个双精度值。所以看起来像这样的代码可以正常工作

double pi = 3.14;
Double tempVariable = new Double(pi);

所以在我看来,由于我可以将 double 包装到 Double,因此包装 double[] 到 Double[]。但事实并非如此。 我尝试了我能想到的一切(语法更改 - 创建一个包含上述 double[] 的 Object 类型的对象,然后转换为 Double[],处理 Double 对象好像它是一个数组),但这些都不起作用。

我正在使用 j2me。

你们有什么建议吗?

@MightyPork:这是我尝试做的第一件事。我认为尝试执行此操作的代码如下:

public Double[] modelWeights = new Double[9];
modelweights = {-1.31,1.39,-0.36,1.55,1.55,-2.03,2.25,2.27,-0.72};

但这行不通。我不知道为什么。

@Abimaran Kugathasan:: 我昨天看到了 ArrayUtils,这将是一个很好的解决方案,但我正在使用 j2me 和诸如 ListHashSet 之类的类em>(ArrayUtils 需要)在 j2me 中没有实现。我错过了什么吗?

编辑:: Abimaran Kugathasan 链接的线程确实有其他答案非常接近 fge 的答案。谢谢大家的cmets。

【问题讨论】:

  • 是的,建议.. 制作 Double 数组并将你的双打复制到那里。
  • [在 Java 中将基元数组转换为容器数组][1] 1. stackoverflow.com/questions/3770289/… 的可能副本
  • Double[] doubles = ArrayUtils.toObject(d);

标签: java


【解决方案1】:

欢迎来到 Java 的历史包袱之一,数组。

发生的情况类似于您拥有基本类型 double 和它们的“类等价物”Double,并且您可以无缝地使用其中一个,因为(从 Java 5 开始)在这种情况下编译器为您进行装箱/拆箱。

但它不会对数组这样做;所以Double[] 不是double[] 的“包装类”。

如果你有一个double[] 数组,你想“变成”一个Double[],你别无选择,只能复制自己......例如:

final double[] primitiveArray = ...;

final int len = primitiveArray.length;

final Double[] boxedArray = new Double[len];

for (int index = 0; index < len; index++)
    boxedArray[index] = Double.valueOf(primitiveArray[index]);

【讨论】:

  • 是的,这解决了问题。非常感谢。这是我昨天尝试但没有 Double.valueOf() 的事情之一。所以我收到错误“双精度不能转换为双精度”。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多