Я пытаюсь получить IntStream из n мерных массивов int. Есть ли хороший способ API для этого?
Я знаю метод конкатенации для двух потоков.
Поток из двумерного массива в java
Ответ 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[]), где T выводится как int[], чтобы получить Stream<int[]>, и затем Stream#flatMapToInt() отображает каждый элемент int[] в IntStream с помощью Arrays.stream(int[]).
Ответ 2
Для дальнейшего расширения ответа Rohit можно использовать ссылку на метод, чтобы немного сократить требуемый код:
int[][] arr = { {1, 2, 3},
{4, 5, 6},
{7, 8, 9} };
IntStream stream = Arrays.stream(arr).flatMapToInt(Arrays::stream);