如何在数组类型的数组中查找sumOfelements

4 java arrays java-8 java-stream

我有一个自定义类

class StackInfo {
    int start, size, capacity;
}
Run Code Online (Sandbox Code Playgroud)

并验证我所拥有的此类信息数组中存在的元素总数

private int numberOfElements(StackInfo[] info) {
    int size = 0;
    for (StackInfo si : info) {
        size += si.size;
    }
    return size;
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用流将其转换为以下内容:

private int numberOfElements(StackInfo[] info) {
    return (int) Arrays.stream(info).map(s -> s.size).count();
    //       ^^ 
    //     to convert long
}
Run Code Online (Sandbox Code Playgroud)

但是,在投射之后,上述代码的输出也不正确.

Nam*_*man 8

您似乎正在寻找sum操作,而不是count需要您将Stream转换为IntStream主要操作.您可以将代码更新为:

private int numberOfElementsStream(StackInfo[] info) {
    return Arrays.stream(info)    // Stream<StackInfo>
            .mapToInt(sd -> sd.size)   //IntStream of their size
            .sum();   // sum of all
}
Run Code Online (Sandbox Code Playgroud)