【发布时间】:2012-10-29 17:41:50
【问题描述】:
我在执行此代码时收到 ConcurrentModificationException。我无法弄清楚为什么会这样?
private void verifyBookingIfAvailable(ArrayList<Integer> list, int id) {
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
int value = iterator.next();
if (value == id) {
int index = list.indexOf(id);
if (index != -1) {
list.remove(index);
}
}
}
}
提前致谢。
【问题讨论】:
-
你的代码似乎严格等同于
while (list.remove(Integer.valueOf(id)));,除非我遗漏了什么...... -
@assylias。好吧,你没有错过任何东西。你完全正确。根本不需要在这里迭代。不错的收获:)
-
@RohitJain 只需要确保调用的是
remove(Object)而不是remove(int)。
标签: java list arraylist concurrentmodification listiterator