遍历HashMap导致增删问题(引发错误)
发布时间
阅读量:
阅读量
背景
在与朋友的一次交流过程中,对方提及了一个具体的问题:在对map进行遍历操作时,执行了remove方法后,程序抛出了ConcurrentModificationException异常。这促使我进一步查阅相关源码,以深入理解其背后的原因。
所使用的JDK版本为1.8
探究
进入HashMap源码后可以观察到,在每次循环即将结束时,系统会对modCount的数值进行一次验证,一旦发现该值发生改变,便会触发ConcurrentModificationException异常。
@Override
public void forEach(BiConsumer<? super K, ? super V> action) {
Node<K,V>[] tab;
if (action == null)
throw new NullPointerException();
if (size > 0 && (tab = table) != null) {
int mc = modCount;
for (int i = 0; i < tab.length; ++i) {
for (Node<K,V> e
全部评论 (0)
还没有任何评论哟~
