Подтвердить что ты не робот

Поток из двумерного массива в java

Я пытаюсь получить IntStream из n мерных массивов int. Есть ли хороший способ API для этого? Я знаю метод конкатенации для двух потоков.

4b9b3361

Ответ 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);