繁体   English   中英

在Java中使用iter.remove()时出现IllegalStateException(Unknown Source)

[英]IllegalStateException (Unknown Source) when using iter.remove() in Java

尝试从以下代码中的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)

Iterator #remove的文档

抛出IllegalStateException - 如果尚未调用下一个方法,或者在最后一次调用下一个方法后调用了remove方法。

所以看起来x.remove()在调用next()之前被调用了两次。

只需确保在调用x.remove()break内部循环。

我通常在循环外初始化迭代器并使用一段时间,从来没有弹出错误。

迭代器itr = YOURLIST.iterator()

while(iterator.hasNext()){...}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM