注意:我知道该Iterator#remove()
方法。
在下面的代码示例中,我不明白为什么List.remove
在main
方法抛出ConcurrentModificationException
,但不是在remove
方法。
public class RemoveListElementDemo {
private static final List<Integer> integerList;
static {
integerList = new ArrayList<Integer>();
integerList.add(1);
integerList.add(2);
integerList.add(3);
}
public static void remove(Integer toRemove) {
for(Integer integer : integerList) {
if(integer.equals(toRemove)) {
integerList.remove(integer);
}
}
}
public static void main(String... args) {
remove(Integer.valueOf(2));
Integer toRemove = Integer.valueOf(3);
for(Integer integer : integerList) {
if(integer.equals(toRemove)) {
integerList.remove(integer);
}
}
}
}
ConcurrentModificationException
而另一个则不。
return;
在循环中添加a来解决此问题。
Iterator#remove()
。你为什么要这样呢?