Ответ 1
Вы хотите, чтобы flatMap в IntStream. После этого брать сумму легко.
int sum = counts.stream()
.flatMapToInt(IntStream::of)
.sum();
Я хочу найти сумму List<int[]>
с помощью Java 8. Вот моя попытка.
int sum = counts.stream().flatMap(i -> Stream.of(i).mapToInt(m)).sum();
Однако я получаю ошибку, не могу преобразовать в Stream<Object>
в <unknown>
.
Вы хотите, чтобы flatMap в IntStream. После этого брать сумму легко.
int sum = counts.stream()
.flatMapToInt(IntStream::of)
.sum();
int sum = counts.stream().flatMapToInt(array -> IntStream.of(array)).sum();
Ваш i
- это примитивный массив (int[]
), поэтому Stream.of(i)
вернет Stream<int[]>
.
Я предлагаю вам сначала рассчитать сумму каждого отдельного массива и затем суммировать все из них:
int sum=counts.stream()
.mapToInt(ar->IntStream.of(ar).sum()) // convert each int[] to the sum
// of that array and transform the
// Stream to an IntStream
.sum(); // calculate the total sum
Вы можете сделать это следующим образом:
int sum = counts.stream() // getting Stream<int[]>
.mapToInt(a -> Arrays.stream(a).sum()) // getting an IntStream with the sum of every int[]
.sum(); // getting the total sum of all values.
Это сработало для меня:
int sum = counts.stream().mapToInt(i -> Arrays.stream(i).sum()).sum();