hashmap

博客探讨了HashMap在并发环境下的数据安全问题,指出其潜在的数据覆盖风险和死锁可能。ConcurrentHashMap通过使用CAS操作解决了这些问题,保证了并发环境下的安全性。文章详细解析了HashMap的扩容机制和节点插入过程,特别是当负载因子达到0.75时触发的扩容策略。同时,提到了 resize() 方法的工作原理,但具体实现未展开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本质来说是一个node[]
结构:
默认0.75的负载因子,意思是超过容量3/4的时候,会对数组进行扩容
数组默认长度 1<<4 无符号右移4位, 10000 16
一个单向链表 node 内部类
tableSizeFor 找到当前cup最接近的 2的次幂
putval(){
if(数组为空): resize() 初始化数组为默认长度
if(判断hash是否存在) 不存在就添加新节点
else 存在的情况
–判断key的hash && key的equals key与第一个节点相同则覆盖
–是树,给树添加节点
–是链表, 循环, 有相同key==下一个是空的 就给下一个节点 赋值 , 判断是否转成树 ,
没相同的返回 只有这两种返回方式
判断 k 有没有被赋值 有的话证明key有相同 , 换值,返回旧的值
判断resize
}
resize(){
//待定
}

为什么说hashmap不安全,以及concurxxxhashapr如何解决

  1. 数据安全问题
    比如计算了一个相同的位置,又进行了并发的put ,会导致数据覆盖,或是链表中下一个节点的引用覆盖, concurxxxhashapr 使用了cas解决

  2. while 死循环的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值