尝试从以下代码中的ArrayList中删除元素时,我收到了一个illegalStateException错误。我用google搜索,发现当你在代码中没有iter.next()时会发生这个错误,但我很确定我的设置是正确的。
for (Iterator<String[]> x = PAuditjobslist.iterator(); x.hasNext(); ){
String[] temp = x.next();
if(temp.length > 2){
String PAdate = dateFudger(temp[PAuditDate],f);
int docCounter = 0;
for(String[] y: cancelledjobslist){
String Cndate = y[canJobDate];
if(temp[PAuditName].equals(y[canJobName]) && PAdate.equals(Cndate) &&
documentNameList.get(docCounter).equals(temp[PAuditDocName]) ){
x.remove();
}
docCounter++;
}
}
}
这是我得到的错误
Exception in thread "main" java.lang.IllegalStateException
at java.util.ArrayList$Itr.remove(Unknown Source)
at csvfilter.main(csvfilter.java:63)
答案 0 :(得分:1)
throws
IllegalStateException
- 如果尚未调用下一个方法,或者在最后一次调用下一个方法后已经调用了remove方法。
所以看起来x.remove()
在被调用next()
之前被调用了两次。
调用break
后,请确保x.remove()
退出内循环。
答案 1 :(得分:-1)
我通常在循环外初始化迭代器并使用一段时间,而不是弹出错误。
Iterator itr = YOURLIST.iterator()
while(iterator.hasNext()){ ... }