如果缺少的记录不在数组列表中

时间:2019-05-29 09:33:37

标签: java arraylist

请原谅我,因为我是编码方面的初学者。我尝试研究将一些缺少的记录添加到列表中的方法,但似乎仍然无法正确地将其放入我的代码中。

我有两个具有不同结果集的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。

1 个答案:

答案 0 :(得分:6)

创建本地列表并向其中添加丢失的记录,然后将本地列表中的所有元素添加到abcList

List<TAbcModel> temp = new ArrayList<>();

在您的循环中:

} else { 
    temp.add(abc);
}

后循环

abcList.addAll(temp);