【问题标题】:How to convert a Double[] to double...? [duplicate]如何将 Double [] 转换为 double ...? [复制]
【发布时间】:2016-11-01 08:04:03
【问题描述】:

给定一个方法定义:

public void create(double... values);

这个方法是这样调用的:

List<Double> values = ...;
Double[] doubles = values.toArray(new Double[0]);
create(doubles);  // wont work

为什么它不起作用?

【问题讨论】:

  • 重载方法 (void create(Double... values))。 Double[]double[] 不能相互转换。
  • 需要手动转换Arrays.stream(input).mapToDouble(Function.identity()).toArray()
  • @Turing85 但是你仍然在同一个泡菜中 - 你需要在方法重载中将Double[]转换为double[]
  • @BoristheSpider 我说只要方法的功能未知,就没有进一步的推测是有用的
  • @helt 不要使用Double[] doubles = values.toArray(new Double[0]),而是使用values.stream().map(Double::doubleValue).toArray()。这样你只复制一次。此外,永远不要这样做 .toArray(new Xxxx[0]) 因为它创建一个空数组,然后丢弃它并创建一个正确大小的数组。你当然知道正确的尺寸,所以使用它。

标签: java


【解决方案1】:
double[] unboxed = Stream.of(boxed).mapToDouble(Double::doubleValue).toArray();

致谢:https://stackoverflow.com/a/30117592/3635454

【讨论】:

  • 请注意,这确实复制了整个数组;这当然是回答当前问题所必需的(你有我的投票)。但如果可能的话,应该尽量避免,因为这真的是在浪费 CPU 周期。
猜你喜欢
  • 1970-01-01
  • 2010-11-09
  • 2020-06-22
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
  • 2023-04-01
相关资源
最近更新 更多