从java中的二维数组流

Sur*_*ani 24 java java-8 java-stream

我试图IntStream从一个n维int数组中获得一个.有一个很好的API方法吗?我知道两个流的连接方法.

Roh*_*ain 44

假设你想在行主要方法中顺序处理数组数组,这应该工作:

int[][] arr = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
IntStream stream = Arrays.stream(arr).flatMapToInt(x -> Arrays.stream(x));
Run Code Online (Sandbox Code Playgroud)

首先,它调用Arrays.stream(T[])方法,其中T推断为int[],获取a Stream<int[]>,然后Stream#flatMapToInt()方法将每个int[]元素映射到IntStreamusing Arrays.stream(int[])方法.


Jac*_* G. 7

为了进一步扩展Rohit的答案,可以使用方法参考来略微缩短所需的代码量:

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

IntStream stream = Arrays.stream(arr).flatMapToInt(Arrays::stream);
Run Code Online (Sandbox Code Playgroud)