从 Java 中的二维数组流式传输

我正在尝试从n维数组中获取一个。有没有一个很好的API方法来做到这一点?我知道两个流的连接方法。IntStreamint


答案 1

假设您希望以行为主的方法按顺序处理数组数组,这应该有效:

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

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


答案 2

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

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

IntStream stream = Arrays.stream(arr).flatMapToInt(Arrays::stream);

推荐