我有一个特定对象的列表映射,我想基于特定的实例变量添加列表的所有元素.
我的对象:
class Risk{
Integer id, riskValue, totRisk=0;
String name;
Integer getId(){
return id;
}
Risk(Object[] result){
id=(Integer)result[0];
riskValue=(Integer)result[1];
name=(String)result[3];
}
}
Run Code Online (Sandbox Code Playgroud)
我从数据库中获得了一个类型为对象的数组列表:
List< Object[] > results=getResults();
Run Code Online (Sandbox Code Playgroud)
我使用Java 8组我的数据由ID,因为我想SUM按riskValue类型的所有对象Risk具有相同id.
这就是我做的:
List<Risk> risks=results.stream().map(Risk::new).collect(Collectors.toList());
Map<Integer, List<Risk>> byId=risks.stream.collect(Collectors.groupingBy(Risk::getId));
Run Code Online (Sandbox Code Playgroud)
此时,我将所有Risk对象按ID分组.并且我希望每个列表总结所有对象riskValue并在变量中包含总数totRisk
如何在变量中计算每个List中变量totRisk的总和riskValue?
注1:我想用Java 8做,我知道如何使用Java 7及以下版本.
注2:也许它也可以一次完成,因为没有先按ID分组.我想要实现的是将原始中具有相同ID的所有对象相加List<Object[]> results.如果只用一个语句就可以做到更好.