У меня есть метод, который принимает ArrayList
из int[]
массивов. Если я вызываю метод с ArrayList
из одного int[]
массива, он должен просто вернуть разницу между двумя значениями в массиве int []. Используя потоковую передачу, я получил
static int difference(ArrayList<int[]> stops) {
return stops.stream().map(Arrays::stream).reduce((a, b) -> (a - b)).get();
}
Хотя я получаю ошибку компилятора, говорящую:
Operator '-' cannot be applied to 'java.util.stream.IntStream', 'java.util.stream.IntStream'
Насколько я понимаю, этот метод превращает список в поток int[]
массивов Затем каждый поток int[]
передается в IntStream
, пока, наконец, не будет вызван метод reduce()
.
Что я не понимаю, так это то, что когда у меня есть код, подобный следующему:
IntStream.of(1, 2).reduce((a, b) -> a - b));
Я не получаю ошибок компилятора. Итак, я спрашиваю: что не так с первым кодом, который заставляет компилятор выдавать эту ошибку? Потому что мне кажется, что оба метода Reduce принимают IntStream.
Редактировать: в решении, которое я решаю, указан каждый массив int[]
, который будет содержать ровно 2 элемента. Как только разница между двумя элементами в массиве int[]
достигнута, ее следует направить на окончательное уменьшение, чтобы получить абсолютное значение разности уменьшенных int
s из каждого массива `int [].