java1.8的hashmap数据结构

枯叶mu 2019-05-13 08:39:42
1 hashmap 在java1.8以前使用的是数组+链表的形式,之后的版本加上了红黑树,解决hash值碰撞过多,性能下降问题。其中有两个阙值当满足时(TREEIFY_THRESHOLD链表数大于8,且MIN_TREEIFY_CAPACITY在hashmap中元素数量大于64)hashmap就会进行树的转化。 2 hashmap创建时容量会转化(根据方法tablesizefor)成最近的2n次方,扩容时根据默认扩容因子(默认0.75)进行两倍新建扩容。 3 hash值的运算,hash运算值是一个32位的int,进行16位移后与运算使高位和低位在16位中都有体现。
...全文
27 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧