zoukankan      html  css  js  c++  java
  • Iterator删除时报错(java.lang.IllegalStateException)

    代码:

    Iterator<StageDO> iterator = subCatalogue.getStages().iterator();
    while (iterator.hasNext()) {
                            if (requestVO.getStages() != null) {
                                StageDO next = iterator.next();
                                String id = next.getId();
                                if (requestmap.get(id) != null) {
                                    next.setName(requestmap.get(id).toString());
                                } else {
                                    iterator.remove();
                                }
                            } else {
                                iterator.next();
                                iterator.remove();
                            }
                        }
    

    我们在用迭代删除(Iterator.remove())时,可能会因为没有“it.next();”这一行, 抛出java.lang.IllegalStateException异常,原因是通过Iterator来删除集合中某一个不满足条件的元素时,首先需要使用next方法迭代出集合中的元素 ,然后才能调用remove方法,否则集合可能会因为对同一个Iterator remove了多次而抛出java .lang.IllegalStateException异常。

    记得在循环体中别忘了iterator.next()

  • 相关阅读:
    jQuery(2)
    jQuery(1)
    underscore.js
    面向对象复习
    1.14函数复习
    面向对象(3)继承
    10.18
    1017
    js笔记二
    js笔记一
  • 原文地址:https://www.cnblogs.com/wuhen8866/p/11102748.html
Copyright © 2011-2022 走看看