【发布时间】:2016-10-12 23:21:00
【问题描述】:
我有这个结构的模型
public class MyModel {
private long firstCount;
private long secondCount;
private long thirdCount;
private long fourthCount;
public MyModel(firstCount,secondCount,thirdCount,fourthCount)
{
}
//Getters and setters
}
假设我有一个包含以下数据的模型列表
MyModel myModel1 = new MyModel(10,20,30,40);
MyModel myModel2 = new MyModel(50,60,70,80);
List<MyModel> modelList = Arrays.asList(myModel1, myModel2);
假设我想找出所有模型中 firstCount 的总和,我可以这样做
Long collect = modelList.stream().collect
(Collectors.summingLong(MyModel::getFirstCount));
如果我想一次性找出所有模型的属性总和怎么办?有什么方法可以实现吗?
输出应该类似于
- firstCount 的总和 = 60
- secondCount 的总和 = 80
- thirdCount 的总和 = 100
- fourthCount 之和 = 120
【问题讨论】:
-
你的意思是
long collect = modelList.stream().mapToLong(MyModel::getFirstCount).sum();?除非您有一个不能多次遍历的特殊流源(在您的示例中不是这种情况),否则执行如上所示的四个操作是最简单且(在大多数情况下)最有效的解决方案。
标签: java functional-programming java-8 reduction collectors