HashMap-1.8

 

底层原理: 数组table +链表多个Node节点,+红黑数

加载因子:0.75

数组初始长度:16

//转换为红黑数的阀值 大于等于8就转

static final int TREEIFY_THRESHOLD = 8;

节点数据结构:

get方法遍历:

//扩容 resize 翻倍

12<< 1=24

//核心算法.

p = tab[i = (n - 1) & hash] //为什么这样写?

----->> 1.  (n - 1) & hash   n - 1 是数组table的index 取&结果永远不会大于 参与运算的最小的值.也就是不会地址越界.

           2.按位操作效率更高,并不等于求余,而是随机数的感觉

 

//^ 异或 相同取0,不同取1  h>>> 右移16位

 

//由put方法可以看出,数组并不是每个index下都会有值,也不是连续存放的,所以叫散列. 某个节点(数组的某个index)下的Node链表长度大于等于8时,转换为红黑树.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值