Ну, Arrays.Stream
в этом случае приведет к тому, что ваш i
будет иметь тип int[]
, который нельзя использовать в filter
.
. Я бы предложил использовать аналогичный пример:Ранее для этой операции также использовался d.
int oddOrMin = Stream.of(arr) // Stream<int[]> and not integers
.flatMapToInt(Arrays::stream) // IntStream
.filter(i -> i % 2 != 0)
.findFirst() // OptionalInt
.orElse(Integer.MIN_VALUE); //default to some value
Сходство
Синтаксис итерации по одномерному и двумерному массиву остается неизменным в приведенном выше решении.
Разница
Решение , которым я поделился для одномерного массива, использует Stream.of(T t)
, где T равно int[]
как указано во входных данных.С другой стороны, решение, предложенное для двумерного массива, использует Stream.of(T... values)
, где снова int[][]
считается int[]...
и, следовательно, T оценивается как int[]
чтобы наконец создать Stream<int[]>
.