Nik*_*hil 7 java arrays lambda 2d java-8
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();
Run Code Online (Sandbox Code Playgroud)
我想将Number [] []转换为double [] [].上面的lambda不起作用,外部的toArray不能编译.
Arrays.stream(intArray):返回Integer []
forEach 的流
:对于每个Integer [],创建一个Integers流,将每个Integer转换为double并返回double [].
for each创建double [],我认为外部toArray将返回此double的数组[]
我怎样才能使它
工作?
Ale*_* C. 11
这是你如何做到的:
double[][] doubleArray = Arrays.stream(intArray)
.map(arr -> Stream.of(arr).mapToDouble(Number::doubleValue).toArray())
.toArray(double[][]::new);
Run Code Online (Sandbox Code Playgroud)
这可以分解如下:
首先你Arrays.stream用来创建一个Stream<Number[]>.然后为每个Number[],创建Stream<Number>,并使用mapToDouble获得DoubleStream,然后toArray()拿到double[]阵列.
最后的toArray调用将其Stream<double[]>转换为double[][]数组.