HashMap_jdk1_7
2020-12-23 18:32:33 0 举报
jdk1.7 HashMap源码解析流程
作者其他创作
大纲/内容
initialCapacity
true
e.hash == hash && ((k = e.key) == key || key.equals(k))
false
e!=null
无
有
重新计算hash值和位置
e.key == null
hash()得到hash值
initialCapacity=最大值
覆盖替换返回oldValue
initialCapacity 0
capacity < initialCapacity
抛异常
capacity决定造数组的长度 他要求必须是> initialCapacity2的次幂
构造器中是否有参数
loadFactor <= 0 | | Float.isNaN(loadFactor)
resize(2 * table.length);扩容成原来的2倍
put方法主流程
e = table[0]取出数组0号元素
initialCapacity最大值
key == null
capacity <<= 1;
new HashMap()
e = e.next取链表的下一个元素
putForNullKey(value)方法
this.loadFactor = loadFactor;负载因子=默认0.75f
含参构造器
(size >= threshold) && (null != table[bucketIndex])如果列表的长度>=resize临界值并且table[i] 还为空
判断 i 位置上的hash和新加入的hash是否相等判断两个key的equals是否相等如果相等证明key相同
e = table[i]取出table列表中i位置的元素
flase
空参构造器
int capacity = 1;
收藏
0 条评论
回复 删除
下一页