gpt4 book ai didi

Java 8 Lambda 将 Number[][] 转换为 double[][]

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:08:24 24 4
gpt4 key购买 nike

Number[][] intArray = new Integer[][]{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
double[][] doubleArray = Arrays.stream(intArray)
.forEach(pArray -> Arrays.stream(pArray)
.mapToDouble(d ->d.doubleValue())
.toArray())
.toArray();

我想将 Number[][] 转换为 double[][]。上面的 lambda 不起作用,外部的 toArray 不编译。

Arrays.stream(intArray) :返回 Integer[] 的流
forEach :对于每个 Integer[],创建一个 Integer 流,将每个 Integer 转换为 double 并返回一个 double[]。
for each 创建了 double[],我认为外部的 toArray 会返回这个 double[] 的数组
我怎样才能让它发挥作用?

最佳答案

这里是你如何做到的:

double[][] doubleArray = Arrays.stream(intArray)
.map(arr -> Stream.of(arr).mapToDouble(Number::doubleValue).toArray())
.toArray(double[][]::new);

这可以分解如下:

首先你使用Arrays.stream创建一个 Stream<Number[]> .然后对于每个 Number[] , 你创建一个 Stream<Number> ,并使用 mapToDouble得到DoubleStream然后 toArray()得到double[]大批。

final toArray调用转换此 Stream<double[]>进入double[][]数组。

关于Java 8 Lambda 将 Number[][] 转换为 double[][],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29176959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com