社区
Java SE
帖子详情
扩容机制中的capacity初始值为什么是16,可不可以自定义成15,为什么一定要是2的指数次方,求指教,感谢
jvliao
2020-12-31 05:09:41
...全文
7368
2
打赏
收藏
扩容机制中的capacity初始值为什么是16,可不可以自定义成15,为什么一定要是2的指数次方,求指教,感谢
[图片]
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
一个帅逼
2020-12-31
打赏
举报
回复
你可以设置15,但是实际会被转换成16,可以看看源码里的tableSizeFor()方法,通过这个方法会将你设置的capacity-1通过位移运算变为最接近的下一个2的n次幂,设置为2的n次方主要是为了快速定位到数组的slot上,2的n次方-1的二进制会使当前capacity的低位全部变为1,再通过与hahs值的&运算可以得到数组slot,区别于取模运算,取模可以设置任何值,但是取模运算效率没有&运算高
是赵敢敢啊
2020-12-31
打赏
举报
回复
写成2的次幂的话计算机做位移预算比较快,应该是这样
Java开发7年,今年面了5家,拿到饿了么P7offer,2024年最新快手sre面试
2.HashMap:了解其数据结构、hash冲突如何解决(链表和红黑树)、扩容时机、扩容时避免rehash的优化。3.TreeMap:了解数据结构、了解其key对象为什么必须要实现Compare接口、如何用它实现一致性哈希。10.
扩容机制
中
的
ca
pac
ity
初始值
为什么是
16
,
可不可以
自定义
成
15
,为什么
一定
要是2的
指数
次方
。17.MySQL使用这种隔离级别时,是如何解决幻读问题的(引申,理解其他并发问题的解决原理)
16
.MySQL用的隔离级别是什么,这个隔离级别下会出现什么问题——引出数据库的并发问题。
10月面试快要结束了!整理下阿里、腾讯、京东的高频面试题,你能答多少,反正我不会
前言: 金九银十基本技术,很多朋友也基本都收到了大厂offer,今天为大家整理下目前大厂问到的面试题,也希望大家都能够收获心仪的offer! 阿里篇: HashMap的数据结构——引出Java7跟Java8的区别 在什么情况下会做一个链表到红黑树的转换 除了数据结构之外,Java8跟Java7在HashMap上还有什么不同 扩容的过程,在什么情况下会扩容
扩容机制
中
的
ca
pac
ity
初始值
为什么是
16
,
可不可以
自定义
成
15
,为什么
一定
要是2的
指数
次方
金九银十已然结束!腾讯、阿里、字节跳动等大厂的最新面试题总结
前言: 金九银十已经过去了,很多朋友也基本都收到了大厂offer,今天为大家整理下目前大厂问到的面试题,也希望大家都能够收获心仪的offer! 腾讯篇: HashMap的数据结构——引出Java7跟Java8的区别 在什么情况下会做一个链表到红黑树的转换 除了数据结构之外,Java8跟Java7在HashMap上还有什么不同 扩容的过程,在什么情况下会扩容
扩容机制
中
的
ca
pac
ity
初始值
为什么是
16
,
可不可以
自定义
成
15
,为什么
一定
要是2的
指数
次方
简单介绍一下hash算法,
金九银十已然结束!蚂蚁金服、美团、京东等大厂的最新面试题总结
前言: 金九银十已经过去了,很多朋友也基本都收到了大厂offer,今天为大家整理下目前大厂问到的面试题,也希望大家都能够收获心仪的offer! 蚂蚁金服篇: HashMap的数据结构——引出Java7跟Java8的区别 在什么情况下会做一个链表到红黑树的转换 除了数据结构之外,Java8跟Java7在HashMap上还有什么不同 扩容的过程,在什么情况下会扩容
扩容机制
中
的
ca
pac
ity
初始值
为什么是
16
,
可不可以
自定义
成
15
,为什么
一定
要是2的
指数
次方
简单介绍一下hash算
HashMap 的长度为什么是 2 的幂
次方
快速计算索引:HashMap 使用取模运算来计算元素在数组
中
的索引,取模运算
中
的除数应当是 2 的幂
次方
。当数组长度为 2 的幂
次方
时,可以使用位运算(& 操作)来替代取模运算,提高计算效率。 均匀分布:当数组长度为 2 的幂
次方
时,HashMap 使用元素的哈希码的低几位来计算索引,这样可以保证元素在数组
中
的分布更加均匀,减少哈希冲突的概率。 ※扩容效率(快速计算各元素的新下标):当数组长度为 2 的幂
次方
时,HashMap 进行扩容时可以通过位运算来重新计算元素的索引,而不需要重新计算哈希码,提高了扩容
Java SE
62,625
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章