【发布时间】:2010-07-20 10:47:40
【问题描述】:
我正在对 ArrayList 使用增强的 for 循环,并希望删除一些包含特定值的元素。
当我尝试这样做时,我得到了上述异常。我环顾四周,似乎在修改集合时使用增强的 for 循环是一个坏主意。我该怎么办?
感谢您的帮助。
【问题讨论】:
我正在对 ArrayList 使用增强的 for 循环,并希望删除一些包含特定值的元素。
当我尝试这样做时,我得到了上述异常。我环顾四周,似乎在修改集合时使用增强的 for 循环是一个坏主意。我该怎么办?
感谢您的帮助。
【问题讨论】:
您可以保留要删除的项目列表,然后在循环完成后调用 removeAll。
Vector toRemove=new Vector();
for (Object o: array){
if(remove(o)) toRemove.add(o);
}
array.removeAll(o);
【讨论】:
你应该为集合获取一个迭代器,遍历它并在你想删除一个元素时调用迭代器上的 remove() 方法。请注意,并非所有 Iterator 实现都支持 remove(),它是一个可选方法!
for(Iterator it = collection.iterator(); it.hasNext();) {
Object element = it.next();
if(.. should remove element ..)
it.remove()
}
【讨论】:
您无法使用增强的 for 循环来执行此操作,因为您无权访问正在使用的 Iterator。您需要使用常规 for 循环并通过 Iterator.remove() 删除 ArrayList 的元素。
【讨论】: