美文网首页
遍历list进行remove操作异常

遍历list进行remove操作异常

作者: IceBear_9f3b | 来源:发表于2020-07-11 23:22 被阅读0次

    产生问题:

    在对list增强for循环进行遍历的时候,如果在不恰当的位置使用了remove,就会产生ConcurrentModificationException异常

    产生原因:

    java的foreach循环其实就是根据list对象创建一个Iterator迭代对象,然后针对Iterator进行遍历.遍历过程中会调用对应的hasNext和next方法

    (1)ArrayList的hasnext和next 方法

       (2)LinkedList的hasnext和next 方法

    两种list的iterator 都有一个方法是checkForComodification,目的是校验是否list被修改过。list中有个属性是modCount,记录着操作修改list的属性,如果操作list的add或remove,modCount属性都会进行+1的操作。

    如果发生了修改,那么在下一次执行到这一步校验的时候,就会发现两个值不相等,抛出异常。

    相关文章

      网友评论

          本文标题:遍历list进行remove操作异常

          本文链接:https://www.haomeiwen.com/subject/poefvxtx.html