请原谅我,因为我是编码方面的初学者。我尝试研究将一些缺少的记录添加到列表中的方法,但似乎仍然无法正确地将其放入我的代码中。
我有两个具有不同结果集的ArrayList。说,第一个是通过其他方法派生并存储在abcList中。然后,此列表在我当前的fixChartStats方法中用作参数。
在我的代码中,我将检查abcList中的对应记录以及我从fixChartStats方法中的hql查询派生的第二个列表。 如果记录对应,那么我将进行如下所示的必要操作以更新ApprovedCount编号等,否则我将其设置为0。
我该如何添加我进入第一个arraylist(即abcList)的第二个列表中缺少的记录?这里有人可以说清楚吗?如果我的问题不清楚,请让我知道。谢谢,伙计们!
private void fixChartStats(List<TAbcModel> abcList, Map<String, Object> param, List<IssueModel> issueList, List<DestModel> destList) throws Exception {
//initialize the hql query
//translate all fields from Object[] into individual variable
firstRow = true;
for (TAbcModel abc : abcList) {
if (abc.getId().getAbcYear() = abcYear &&
abc.getId().getAbcMonthId() = abcMonthId &&
abc.getId().getAbcApplAccnId().getAccnId().equalsIgnoreCase(abcApplAccnId.getAccnId()) {
if (firstRow) {
abc.setApprovedCount(abcApprovedCount);
abc.setCancelledCount(abcCancelledCount);
firstRow = false;
} else {
abc.setApprovedCount(0);
abc.setCancelledCount(0);
}
}else{
// How to do the necessary here
// Below is what I've tried
abcList.add(abc);
}
}
}
调试时,我注意到它已添加到列表中。但是在添加之后不久,抛出了ConcurrentModificationException。
答案 0 :(得分:6)
创建本地列表并向其中添加丢失的记录,然后将本地列表中的所有元素添加到abcList
List<TAbcModel> temp = new ArrayList<>();
在您的循环中:
} else {
temp.add(abc);
}
后循环
abcList.addAll(temp);