我在ArrayList上使用增强的for循环,并希望删除一些包含特定值的元素。
当我尝试这样做时,我得到了上述异常。我已经浏览了一下,似乎使用增强的for循环,而修改集合是一个坏主意。我怎么会这样做呢?
感谢您的帮助。
答案 0 :(得分:4)
您可以保留要删除的项目列表,然后在循环结束后调用removeAll。
Vector toRemove=new Vector();
for (Object o: array){
if(remove(o)) toRemove.add(o);
}
array.removeAll(o);
答案 1 :(得分:3)
当你想删除一个元素时,你应该得到一个集合的Iterator,然后在迭代器上调用remove()方法。请注意,并非所有Iterator实现都支持remove(),它是一个可选方法!
for(Iterator it = collection.iterator(); it.hasNext();) {
Object element = it.next();
if(.. should remove element ..)
it.remove()
}
答案 2 :(得分:1)
您无法使用增强型for循环执行此操作,因为您无权访问正在使用的Iterator
。您需要使用常规for循环并通过Iterator.remove()
删除ArrayList
的元素。