ArrayList中类对象属性的java求和值
我有一个ArrayList,它有许多对象。我想对相同属性名的值求和
示例Array List
中的数据是ProfitAndLossDataDO的对象
"Michel" , 5000
"Alex" , 5000
"Edvin" , 4000
"Sosha" , 3000
"Michel" , 2000
"Alex" , 3000
结果将是(当人相同时的值之和)——
"Michel" ,7000
"Alex" , 8000
"Edvin" , 4000
"Sosha" , 3000
逻辑类ProfitAndLossDataDO
public class ProfitAndLossDataDO {
String ledgerName;
double ledgerAmount;
public ProfitAndLossDataDO() {
}
public ProfitAndLossDataDO(String ledgerName, double ledgerAmount) {
this.ledgerName = ledgerName;
this.ledgerAmount = ledgerAmount;
}
public String getLedgerName() {
return ledgerName;
}
public void setLedgerName(String ledgerName) {
this.ledgerName = ledgerName;
}
public double getLedgerAmount() {
return ledgerAmount;
}
public void setLedgerAmount(double ledgerAmount) {
this.ledgerAmount = ledgerAmount;
}
@Override
public String toString()
{
return ("ledger name : "+this.getLedgerName()+" Amount : "+this.getLedgerAmount());
}
}
谢谢
# 1 楼答案
您可以按照aleroot的建议使用哈希映射。使用name作为键,sum作为值。每当需要插入值时,只需检查具有相同键的条目是否存在并更新它
# 2 楼答案
为什么不把它们放在一个基于地图的集合中,并带有键/值对
我认为在这种情况下,基于地图的集合更适合您拥有的数据和您想要使用它的上下文
如果需要保留列表中的单个项目,可以使用链接列表作为映射的值
例如:
并对值LinkedList的每个元素求和,以找到总数。。。您甚至可以使用getTotal()或Sum()等辅助函数将双精度链接列表包装到容器对象中
# 3 楼答案
我将迭代列表并在地图中收集结果:
编辑:
Java 8对^{} 接口的增强使我们能够以稍微优雅的方式实现此方法,中间是恼人的
if
块: