我想找到使用Java 8的List<int[]>
的总和。这是我的尝试。
int sum = counts.stream().flatMap(i -> Stream.of(i).mapToInt(m)).sum();
但是,我收到的错误无法转换为Stream<Object>
到<unknown>
。
答案 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();