【发布时间】:2019-10-22 06:04:56
【问题描述】:
我了解,当我尝试修改(在这种情况下添加)列表时,我得到了 ConcurrentModificationException,但是解决此问题的最佳解决方案是什么?
for (Map.Entry<String, Child> entry : children.entrySet() {
childEvent.child = entry.getValue();
if (childEvent.getDate() != null && childEvent.getDate().equals(selectedDate)) {
if(this.selectedDayevents.isEmpty()) {
// List
this.selectedDayevents.add(childEvent);
}
for (CareDay selectedCareDay : this.selectedDayevents) {
// Here I have to combine data in some cases...
}
}
}
【问题讨论】:
-
在另一个
Map中收集更改,然后在遍历条目后使用Map.addAll。 -
但是我需要在第二个 for 循环中将数据添加到 CareDay-objects,所以我认为将每个更改的对象收集到第三个 List、Map 等并不是解决方案,然后我必须循环那些(我认为)
-
如果您需要在迭代过程中修改列表 - 使用此列表
Iterator到add和remove元素或创建新列表并添加/删除它。 -
请在您的minimal reproducible example 中显示失败代码。显然,您展示的
add声明不是失败的声明?在这种情况下,您应该删除它以使示例 minimal ,并请添加语句 this is 失败。另外请正确缩进代码 - 现在几乎不可能阅读它。
标签: java list for-loop concurrentmodification