java.util.ConcurrentModificationException处理
出现场景
- 使用list容器时,在循环遍历中add或remove元素
- 使用set容器时,在循环遍历中add或remove元素
- 使用map容器时,在循环遍历中remove元素
错误原因
- remove操作时,只有modCount++,而expectedCount值未变,迭代器在取下一个元素的时候,发现该二值不等,则抛ConcurrentModificationException异常。
- add操作同理
解决办法
list/set容器
- 采用迭代方法循环遍历,remove操作使用iterator提供的原生态remove()方法
- add操作用新的容器暂存,然后在遍历结束后,全部添加到原容器当中。
map 容器
- 使用ConcurrentHashMap