其他
你听说过 Fail-fast 机制吗?程序的浪漫?
你听说过 Fail-fast 机制吗?程序的浪漫?
快速失败?! 纳尼 失败还能这么快的吗 ?
我以为电视上那个什么勿扰的牵手环节已经够快了,当场出结果,没想到这代码里也有这种机制~
哈哈哈哈 难道代码也有这么浪漫的环节?!
想多了啦你 哈哈哈哈
还不快来看源码?
真是太不容易了 又骗了一个 程序员进来修炼 罪过啊~ 哈哈哈
上文我们说到了这个HashMap, 下面我们简单介绍下 集合家族中相关的 fail-fast机制~
这个其实是 Java 集合类的一个错误机制,会抛出 ConcurrentModificationException
这个错误发生的时机 就是在 遍历时对集合的结构进行修改 ,即删除或者添加元素时。
但是通过迭代器iterator
中的 remove 方法是不会报错的 ,下面让我们来看看这到底是为什么吧~
上面这个 foreach 语法是个语法糖 实际调用的还是 迭代器的 iterator 的 next 方法
可以看到我们平时使用的,key,value 和 entry 这三种迭代器~
remove 方法源码
每次对集合结构进行修改时,都会对 modCount
进行加1操作~
public final void remove() {
Node<K,V> p = current;
if (p == null)
throw new IllegalStateException();
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
current = null;
K key = p.key;
removeNode(hash(key), key, null, false, false);
// 其实就是最后一句话,对 这个期待值 重新 赋值了
expectedModCount = modCount;
}
如果你耐心看到这里了,那我还想多嘴下~
喂,记得把花带上呀!光有一颗浪漫的心还不够呀~
谢谢可爱又帅气的大佬们的观看!祝您 天天开心!😄
感谢您的关注!您的每个关注,都是博主 肝 的动力 😝
点个“在看”表示朕
面试, HashMap,看?
一文带你看遍单例模式的八个例子,面试再也不怕被问了
摸鱼小技巧之IDEA调试篇一