Я пытаюсь получить 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);