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)
但是,在投射之后,上述代码的输出也不正确.
您似乎正在寻找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)
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |