3 回答

TA贡献1833条经验 获得超4个赞
这个类的迭代器和listIterator方法返回的迭代器是快速失败的:如果列表在创建迭代器之后的任何时候进行了结构上的修改,那么除了通过迭代器自己的Remove或Add方法,迭代器将抛出一个ConcurrentModificationException。
next()
next()
hasNext()
hasNext()
next()
public boolean hasNext() { return cursor != size();}
next()
摘要
List.remove()
ConcurrentModificationException

TA贡献1815条经验 获得超6个赞
Collection
Clone
Constructor
.
此异常可能由检测到对象的并发修改的方法引发,而这种修改是不允许的。
final
private static final List<Integer> integerList;
List<Integer> copy = new ArrayList<Integer>(integerList);for(Integer integer : integerList) { if(integer.equals(remove)) { copy.remove(integer); }}

TA贡献1825条经验 获得超4个赞
List<Integer> integerList;integerList = new ArrayList<Integer>();integerList.add(1);integerList.add(2);integerList.add(3);int size= integerList.size();//Item to removeInteger remove = Integer.valueOf(3);
解决办法:
//To remove items from the list, start from the end and go backwards through the arrayList//This way if we remove one from the beginning as we go through, then we will avoid getting a runtime error//for java.lang.IndexOutOfBoundsException or java.util.ConcurrentModificationException as when we used the iteratorfor (int i=size-1; i> -1; i--) { if (integerList.get(i).equals(remove) ) { integerList.remove(i); }}
添加回答
举报