【发布时间】:2017-09-22 04:37:44
【问题描述】:
在验证对象是否已经存在于列表中之后,我正在尝试将对象添加到数组列表中。但是我得到了一个 ConcurrentModificationException 我不知道如何解决它。
有什么帮助吗?
这里是抛出异常的代码:
List<ContexteNb> projets = service.findByprojet(p);
List<ProjetVTO> models = new ArrayList<>();
for (ContexteNb contexteNb : projets) {
ProjetVTO model = new ProjetVTO();
model.setNbillets(contexteNb.getNbBillet());
model.setAnnee(contexteNb.getDimDate().getAnnee());
model.setPriorite(contexteNb.getDimPriorite().getPriorite());
if (models.isEmpty()) {
models.add(model);
}
else{
for (ProjetVTO projetModel : models) {
if ((projetModel.getAnnee() == model.getAnnee())
&& (projetModel.getPriorite().equals(model.getPriorite()))) {
projetModel.setNbillets(projetModel.getNbillets() + model.getNbillets());
} else {
models.add(model);
}}}}
谢谢,
【问题讨论】:
-
尝试同步您的列表。
-
同步您的列表不会解决此问题。您会收到此异常,因为您在循环访问列表时正在修改列表。更改您的代码,以免您这样做。例如,先将所有要添加的元素放在一个单独的列表中,然后在循环后使用
models.addAll(...)更新原始列表。