繁体   English   中英

一维数组到二维“列”数组的快速转换

[英]Fast conversion of single dimension array to two dimensional 'column' array

Java 中是否有任何内置函数(或快速实现)可以将大小为[n]的一维数组转换为大小为[n][1]的二维数组?

例如:

double[] x = new double[]{1, 2, 3};
double[][] x2D = new double[][]{{1}, {2}, {3}};

如果您正在寻找一个内置的 function 将一维数组转换为二维数组,遗憾的是没有。

但是,正如评论中指出的那样,您可以使用流来达到一种相当紧凑的方式来从一维数组初始化您的二维数组 基本上,您可以根据数组的长度定义矩阵的维度,然后依靠 stream 在二维数组中复制数组的元素。

double[] x = new double[]{1, 2, 3};
double[][] x2D = new double[x.length][1];
IntStream.range(0, x.length).forEach(i -> x2D[i][0] = x[i]);

如果不需要维护基于原始类型的多维数组,您可以使用 stream 直接初始化矩阵,但代价是拥有Double[][]而不是double[][]的多维数组。

double[] x = new double[]{1, 2, 3};
Double[][] mat = Arrays.stream(x).mapToObj(i -> new Double[]{i}).toArray(Double[][]::new);

可以使用Arrays.setAll方法:

double[] x     = {1, 2, 3};
double[][] x2D = new double[x.length][];

Arrays.setAll(x2D, i -> new double[]{x[i]});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM