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

Как суммировать значения в List <int []> с помощью Java 8

Я хочу найти сумму List<int[]> с помощью Java 8. Вот моя попытка.

int sum = counts.stream().flatMap(i -> Stream.of(i).mapToInt(m)).sum();

Однако я получаю ошибку, не могу преобразовать в Stream<Object> в <unknown>.

4b9b3361

Ответ 1

Вы хотите, чтобы flatMap в IntStream. После этого брать сумму легко.

int sum = counts.stream()
        .flatMapToInt(IntStream::of)
        .sum();

Ответ 2

int sum = counts.stream().flatMapToInt(array -> IntStream.of(array)).sum();

Ответ 3

Ваш 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

Ответ 4

Вы можете сделать это следующим образом:

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.

Ответ 5

Это сработало для меня:

int sum = counts.stream().mapToInt(i -> Arrays.stream(i).sum()).sum();