我有以下方法
private Set<Chapter> chapters;
public long getCount() {
long count = 0;
for (Chapter chapter : chapters) count += chapter.getCount();
return count;
}
我希望使用Java 8功能(例如streams和lambda)改进此代码,但我无法将外部变量更改为lambda,所以我试图作弊,但这是一个非常糟糕的解决方案。
public long getCount() {
final long[] count = {0};
chapters.parallelStream().forEach(chapter -> count[0] += chapter.getCount());
return count[0];
}
你能帮助我吗 - 或者提供一些有用的链接给我。 对不起,如果它是重复的。
答案 0 :(得分:3)
不再重要,我已经找到了mapToLong()
https://docs.oracle.com/javase/tutorial/collections/streams/reduction.html
public long getCount() {
return chapters.parallelStream().mapToLong(Chapter::getCount).sum();
}