如何使用Java 8对List <int []>中的值求和

时间:2017-12-28 19:28:01

标签: java lambda

我想找到使用Java 8的List<int[]>的总和。这是我的尝试。

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

但是,我收到的错误无法转换为Stream<Object><unknown>

5 个答案:

答案 0 :(得分:31)

您想要flatMap到IntStream。 在那之后,拿这笔钱很容易。

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

答案 1 :(得分:14)

std::getline()

答案 2 :(得分:7)

您的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

我建议你先计算每个数组的总和,然后加总所有数组:

sortname

答案 3 :(得分:5)

你可以这样做:

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.

答案 4 :(得分:2)

这对我有用:

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