用java的Map时候碰到这样一个错误Exception in thread "main" java.util.ConcurrentModificationException
我在遍历Map(用迭代器)的时候删除了某些元素,然后调用迭代器是时候就触发了这个错误,我就看一下源码,原因是Map和Iterator中维持了这样一个遍历modcount,用来记录Map和Iterator中修改数据结构的次数,当你删除Map的时候Map中的modcount的次数会减少1,但Iterator的次数没有减少,一旦这两个modcount的次数不相等,就会报上面那个错误。
解决办法是不要调用Map的remove()函数,调用Iterator中的迭代函数就可以了,Iterator中remove的声明如下
void | remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 |