【发布时间】:2014-03-27 19:44:12
【问题描述】:
我有一个 Fact 对象列表。每个对象都有一个日期字段 (reportingDate) 和一个长字段 (numberSaved)。每个报告日期都有几个结果。我正在尝试获取每个报告日期的所有 numberSaved 值的总和。目前,我正在这样做:
private static List<Fact> sumFacts(List<Fact> facts) {
List<Fact> summedFacts = new ArrayList<Fact>();
for (Fact fact : facts) {
boolean found = false;
for (Fact sumFact : summedFacts) {
if(sumFact.getReportingDate().equals(fact.getReportingDate())) {
found = true;
sumFact.setNumberSaved(sumFact.getNumberSaved() + fact.getNumberSaved());
}
}
if (!found) summedFacts.add(fact);
}
return summedFacts;
}
public class Fact {
String reportingDate;
long numberSaved;
public String getReportingDate() {
return reportingDate;
}
public void setReportingDate(String reportingDate) {
this.reportingDate = reportingDate;
}
public long getNumberSaved() {
return numberSaved;
}
public void setNumberSaved(long numberSaved) {
this.numberSaved = numberSaved;
}
}
对于原始列表中的每个项目,它会遍历新列表以寻找匹配的日期。如果它找到一个具有匹配日期的对象,它会将其 numberSaved 值添加到它。如果它通过整个列表但没有找到匹配的日期,它会将自己添加到新列表中。
有没有更有效的方法可以将值汇总到具有唯一日期的 Fact 对象列表中?
编辑:
我忘了说我需要维护物品的顺序
【问题讨论】:
标签: java performance list