hashmap和currentHashmap

hashmap 1.7和1.8 的区别

数据结构上:

1.7使用数组+链表+头插法

1.8使用数组+链表+红黑树+尾插法

hash的扰动函数:

1.7 5次异或+4次位运算

1.8 1次异或+1次位运算

扩容机制的实现:

1.7

扩容两倍;

计算原hashmap中的数据在新hashmap中的位置,使用&运算;

设置新的阈值;

放入最新的值。

1.8 

异常判断;

扩容两倍;

计算原hashmap中的数据在新hashmap中的位置,位置为原位置或者原位置+原来数组大小,同时放入新加入的值;

设置新的阈值;

查询时间复杂度:

从原来的遍历链表O(n),变成遍历红黑树O(logN)

 

currenthashmap 1.7和1.8 的区别

数据结构上:

1.7使用数组+链表+segment

1.8使用数组+链表+红黑树+CAS+synchronize

锁的粒度:

1.7是对需要进行数据操作的Segment加锁

1.8为对每个数组元素加锁(Node)

链表转化为红黑树:

定位结点的hash算法简化会带来弊端,Hash冲突加剧,因此在链表节点数量大于8时,会将链表转化为红黑树进行存储。

查询时间复杂度:

从原来的遍历链表O(n),变成遍历红黑树O(logN)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值