![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA源码
Numblgw
这个作者很懒,什么都没留下…
展开
-
HashMap中resize()方法源码详解(一)
HashMap中的resize()方法作用是初始化或者加倍容量,方法内部会自动判断当前进行的是初始化还是扩容操作。 扩容操作是通过“新建一个hash表,然后将旧表中的内容重新散列复制到新表中”这种方式实现的。 源码中大概可以分为两部分: 第一部分主要用于判断当前操作的类型(初始化or扩容)并且计算出新生成的表的容量和阈值。 第二部分只用于扩容操作时,将旧表中的元素重新散列放入新表...原创 2019-03-03 19:25:55 · 692 阅读 · 1 评论 -
HashMap中tableSizeFor方法源码解析
简单讲一下HashMap中的tableSizeFor()方法的源码,在看源码之前要先知道HashMap的一些特性,例如:HashMap的容量只能是2的幂,最大容量是1<<30 tableSizeFor()的作用是,在HashMap进行给定初始容量的初始化时,将传入的参数(初始容量)修改为2的n次幂,以此来保证HashMap的容量只会是2的幂。也就是说如果传入的参数为x...原创 2019-03-17 20:50:03 · 436 阅读 · 1 评论 -
ArrayList 快速失败(fail-fast)机制实现原理 源码解析
最近在看ArrayList源码,看到过程中我注意到在add或者remove元素时都会让modCount这个变量自增。从变量名字看,这应该是用来记录ArrayList的修改次数的,可是记录修改次数有什么用? 于是我去问朋友(他最近也在看ArrayList源码): 我:用猫的康特这个变量记录修改次数有什么用? 朋友:ArrayList的快速失败机制啊,你忘了吗? 我:额(一脸懵逼)。。。。。。我好像真...原创 2019-04-09 17:01:11 · 1399 阅读 · 0 评论