map遍历进行修改的一些问题

对map,list等进行遍历的时候,不做增加,删除的时候,fori,fore,iterator等方式都没太大区别,当需要在遍历的过程中,增加或删除元素的时候,就会遇到异常了。
具体参考这篇文章:
在foreach循环里进行remove/add操作
具体的remove/add参考上面的文章就好,接下来说一下我最近做的蠢事。

首先说一下错误的做法,在增强for循环里,进行add,和remove操作,会导致modCount和expectCount这2个值不一致。我在用迭代器遍历Map的时候,先iterator.remove,然后map.put最后抛了异常,一开始心想,用了迭代器进行remove操作了,为什么还会抛这个异常呢,后来拍了拍脑袋,先remove,再add,也破坏了modCount和expectCount这2个值。

最后我用了2个数组,保存了迭代过程中产生的局部遍量,在退出循环之后,从2个数组取值,然后map.put,当然,最后数组取值的 时候又做了点蠢事,数组下标越界了。

你可能感兴趣的:(map遍历进行修改的一些问题)