Arrays 如何在Java8中从三维数组中获取流?

Arrays 如何在Java8中从三维数组中获取流?,arrays,java-8,java-stream,Arrays,Java 8,Java Stream,我知道如何从二维数组中获取流,但我想知道如何从三维数组中获取流 int[][][] data = { { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }, { {1,

我知道如何从二维数组中获取流,但我想知道如何从三维数组中获取流

 int[][][] data = {
                    {
                        {1, 2, 3},
                        {4, 5, 6},
                        {7, 8, 9}
                    },
                    {
                        {1, 2, 3},
                        {4, 5, 6},
                        {7, 8, 9}
                    }
                  };

您只需再次调用
flatMap
即可将流从
int[][]
更改为
int[]

IntStream stream = Arrays.stream(data)
                         .flatMap(twoDArray -> Arrays.stream(twoDArray))
                         .flatMapToInt(oneDArray -> Arrays.stream(oneDArray));

如果你可以用二维数组,那么用
N
dimensional数组就不难了

解决方法如下所示:

IntStream result = Arrays.stream(data)
                         .flatMap(Arrays::stream)
                         .flatMapToInt(Arrays::stream);
// the call to Arrays.stream yields a Stream<int[][]>
Stream<int[][]> result1 = Arrays.stream(data); 

// the call to flatMap yields a Stream<int[]>
Stream<int[]> result2 = result1.flatMap(Arrays::stream);

  // the call to flatMapToInt yields a IntStream
IntStream intStream = result2.flatMapToInt(Arrays::stream);
为了更好地帮助理解上面发生的事情,您可以按如下方式拆分方法调用:

IntStream result = Arrays.stream(data)
                         .flatMap(Arrays::stream)
                         .flatMapToInt(Arrays::stream);
// the call to Arrays.stream yields a Stream<int[][]>
Stream<int[][]> result1 = Arrays.stream(data); 

// the call to flatMap yields a Stream<int[]>
Stream<int[]> result2 = result1.flatMap(Arrays::stream);

  // the call to flatMapToInt yields a IntStream
IntStream intStream = result2.flatMapToInt(Arrays::stream);
//对Arrays.stream的调用产生一个流
Stream result1=Arrays.Stream(数据);
//对flatMap的调用产生一个流
streamresult2=result1.flatMap(数组::Stream);
//对flatMapToInt的调用产生一个IntStream
IntStream IntStream=result2.flatMapToInt(数组::流);

什么流?如果你知道如何处理二维阵列,你能把解决方案外推到三维吗?我想得到IntStream。对于二维阵列,解决方案如下:
IntStream is=Arrays.stream(data.flatMapToInt(row->Arrays.stream(row))作为Java 8的初学者,我无法将解决方案外推到3D。感谢@YassinHajajThanks的解释,@Aominè