首页 > 解决方案 > 如何解压二维数组?

问题描述

如果我有一个二维数组:

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])
    }
}

标签: java

解决方案


使用流很容易。

  • 第一个流返回单独的一维数组(本质上是行)。
  • 下一个将它们中的每一个扁平化为单个流。
  • 然后将该流收集回一个数组。
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]

推荐阅读