我陷入了一个非常奇怪的情况..那是有两个嵌套的for循环,而最里面的for循环我正在测试某个条件,如果该条件成立,那么在那个状态下我将内部for循环取出来通过使用continue语句,从该索引本身的aray列表中的元素开始,但是现在我希望该最内层的for循环继续到arraylist的下一个剩余元素,但是rite现在没有发生... rite实际发生了什么现在,如果条件在内部for循环中变为true,则从索引列表中删除该索引处的元素
然后流继续执行语句,这又将流转移到内部for循环的开始,这很完美,但是从那里开始,现在,从内部for循环开始的流应该进入内部for循环,这没有发生
根据我的分析,当条件在内部for循环中变为真时,正在从列表中删除元素
请指教,因为继续再将流程返回到内部for循环的乞求,然后从那里继续流向内部for循环的结尾(不应该发生),它应该在for循环内进入其余的arraylist元素,请注意
//outermost for loop
for (File file : updatedFile) {
//fetching data into the list
List<teetobjects> abcobjects = (List<teetobjects>) feedObjectsGetter.getObjects(file);
//inner most for loop begains
for (teetobjects pecdeedObject : abcobjects) {
//checking some condition for each element in the inner most element ....
if (st.contains(s1)) {
// if the condition is true then removing the element of the
// aaraylist named abcobjects within inner for loop
abcobjects.remove(recFeedObject);
continue;
}
}
}
最佳答案
您不能使用for
循环的“对于每个”版本从要迭代的容器中删除对象:如果从要迭代的集合中删除对象,则会得到ConcurrentModificationException
。
为了使它起作用,您需要显式使用ListIterator<T>
并在其上调用remove
:
List<teetobjects> abcobjects = (List<teetobjects>)feedObjectsGetter.getObjects(file);
//inner most for loop begins
ListIterator<teetobjects> iter = abcobjects.listIterator();
while (iter.hasNext()) {
teetobjects pecdeedObject = iter.next();
//checking some condition for each element in the inner most element ....
if (st.contains(s1)) {
// if the condition is true then removing the element of the
// aaraylist named abcobjects within inner for loop
iter.remove();
continue;
}
}