ConcurrentHashMap基础原理

本文详细介绍了ConcurrentHashMap的基础知识,包括其使用数组+链表/红黑树的数据结构,初始容量为16,扩容策略,以及如何通过(n-1)&hashcode确定元素位置。当链表长度超过8时,会转换为红黑树以优化查找效率。此外,还解释了(n-1)&hashcode等价于hashcode&(n-1)的原因。
摘要由CSDN通过智能技术生成

ConcurrentHashMap基础知识

1、hashMap底层的数据结构采用的是,数组+(链表/红黑树)的数据结构

Node[n] 数组的初始容量是16,容量因子系数是0.75,当在数组容量超过16*0.75=12时调用resize()扩容为32(2的N次方)
数据的某个位置例如Node[1]上 需要放置多个元素时放在链表中,当链表的深度超过8时转化为红黑树(二叉树的一种,左边小右边大便于查找)。

2.hashMap中元素存放数组位置的算法,计算元素存放数组位置,因为每个元素都有hashcode,在计算位置时采用(n-1)&hashcode,下边解释(n-1)&hashcode

(n-1)&hashcode 等价于hashcode&(n-1),原因由于a/b 当b是2的n次方时,是等价于a&(b-1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值