当前位置: 首页 > 知识库问答 >
问题:

强制转换Java数组

谷梁弘深
2023-03-14

我希望将一个< code>int数组转换为一个< code>double数组。

所以,当我有

int arr[] = {1, 2, 3}; 

我想使用arr,比如说把它作为一个双[]参数传递给一个方法。

最好的方法是什么?

演员阵容

(double[])arr

不工作。

我可以迭代通过arr

double[] dblA = new double[arr.length];
int ind=0; 
for (int x:arr)
    dblA[ind++]=x;   // (double)x; 

有没有更好的方法来做到这一点?

<代码>系统。arraycopy不起作用——不适用于两种不同基元类型的数组。

注意:在Java和其他一些讨论中,我们看到了将对象转换为数组。

蒂亚。

共有2个答案

林英朗
2023-03-14

对于Java 8,有一个基于闭包的优雅解决方案:

package com.java.se.stackoverflow;

import java.util.Arrays;

public class ArrayCast {

    public static void main(String[] argv) throws Exception {
        int[] inputArray = new int[]{23, 4, 5, 6, 89};
        double[] outputArray = new double[inputArray.length];
        Arrays.setAll(outputArray, inputArrayIndex -> (double) inputArray[inputArrayIndex]);

        System.out.println(Arrays.toString(outputArray));

    }

}
左丘积厚
2023-03-14

使用Java7或以下版本没有简单的方法,您只需手动复制它们。

使用Java 8,你可以使用这样的流来更容易地完成它(当然你需要循环遍历数组):

int[] intArray = {1, 2, 3};
double[] doubleArray = Arrays.stream(intArray)
    .mapToDouble(i -> i)
    .toArray();

这将首先创建一个IntStream,然后使用转换IntToDoubleFunction将其映射到DoubleStream,该转换将映射每个int i.并执行相应的double i。最后,使用<code>toArray

 类似资料:
  • 那么谁能解释一下这里的区别是什么,为什么java会做这样的设计呢?多谢了。 编辑:一个类似的问题

  • 问题内容: 我有以下两节课: 和: 当我运行测试时,一切都是笨拙的。如果我将类型参数化更改为: 编译器抱怨,报告: 错误:类型不兼容的整数不能转换为T number = new Integer(11); 其中T是类型变量T扩展了在方法getSomeValue(boolean)中声明的Object 它同样对Double有所抱怨。为什么? 编辑:我犯了一个错误。这实际上是有效的代码。 现在我明白了@S

  • 本文向大家介绍浅谈Java数值类型的转换与强制转换,包括了浅谈Java数值类型的转换与强制转换的使用技巧和注意事项,需要的朋友参考一下 数值类型之间的转换 6个实心箭头箭头表示无信息丢失的转换; 3个虚箭头表示可能有精度损失的转换. 当使用上面两个数值进行二元操作时,先要将两个操作数转换为同一类型,然后再进行计算. 规则:`两个数中小类型的值将自动转换为大类型的值. 小转大可以,但是大转小会损失精

  • 隐含的强制转换 隐含的 强制转换是指这样的类型转换:它们是隐藏的,由于其他的动作隐含地发生的不明显的副作用。换句话说,任何(对你)不明显的类型转换都是 隐含的强制转换。 虽然 明确的 强制转换的目的很明白,但是这可能 太过 明显 —— 隐含的 强制转换拥有相反的目的:使代码更难理解。 从表面上来看,我相信这就是许多关于强制转换的愤怒的源头。绝大多数关于“JavaScript强制转换”的抱怨实际上都

  • 明确的强制转换 明确的 强制转换指的是明显且明确的类型转换。对于大多数开发者来说,有很多类型转换的用法可以清楚地归类于这种 明确的 强制转换。 我们在这里的目标是,在我们的代码中指明一些模式,在这些模式中我们可以清楚明白地将一个值从一种类型转换至另一种类型,以确保不给未来将读到这段代码的开发者留下任何坑。我们越明确,后来的人就越容易读懂我们的代码,也不必费太多的力气去理解我们的意图。 关于 明确的

  • 调用AffineTransform: 它驻留在自定义形状类(YingYang)中。 当我进行调用时,当我试图从绘图面板或在类本身(如果我将返回类型更改为YingYang)中将它转换回一个YingYang时,我会得到一个类转换异常。 java.lang.ClassCastException:java.awt.Geom.Path2D$Double不能强制转换为Animation.Yingyang 任何