HashMap学习笔记

HashMap

数据结构 - 数组

优点:连续的内存,通过下标可以快速寻址
缺点:插入节点困难

数据结构 - 单链表

优点:插入和删除数据方便
缺点:查询效率低 O(n)

数据结构 - HashMap

hashmap的数据结构包括了初始数组、链表、红黑树
插入数据的时候使用pos=key%size来进行插入数据
当两个或者两个以上的pos相同且key值不同的时候发生冲突,就会挂在数组初始化位置的链表后
当某个节点后出现过多的链表节点的时候,就会转换成红黑树以提高效率

源码总结 - HashMap

hashmap的数据结构包括了初始数组、链表、红黑树
数组容量2的倍数:

1提高运算速度
2增加散列度,降低冲突
3减少内存碎片

hash函数与pos定位:

hashcode的高16位和低16位进行异或求模,增加散列度,减低冲突
插入冲突:通过单链表解决冲突,如果链表长度超过(TREEIFY_THRESHOLD=8),进行单链表和红黑树的转换以提高查询速度

扩容:

扩容条件:实际节点数大于等于容量的四分之三
扩容后数据排布:要么是原下标的位置,要么是原下标+原容量的位置

序列化:只存储了数组的容量、实际节点数量和各个节点的key、value值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值