你如何解包一个二维数组?
如果我有一个二维数组:
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};
我将如何将其解压缩为:
int[] a = {1, 2, 3, 4, 5, 6, 9, 7}
我知道你可以使用 for 循环来做到这一点,但它看起来很笨重,我想知道是否有更好的方法来做到这一点:
int[] b = new int[9]
for (int i = 0; i < a.length; ++i) {
for(int j = 0; j < a[i].length; ++j) {
b.append([i][j])
}
}
回答
使用流很容易。
- 第一个流返回单个一维数组(本质上是行)。
- 下一个将其中的每一个扁平化为一个流。
- 然后该流被收集回一个数组。
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};
int[] oneD = Arrays.stream(a).flatMapToInt(Arrays::stream).toArray();
System.out.println(Arrays.toString(oneD));
印刷
[1, 2, 3, 4, 5, 6, 9, 7]