学习源码总结

hashMap源码
  1. 创建不指定大小的话,集合不进行初始化,第一次添加的时候进行初始化。
  2. 初始化长度为16,阈值为0.75
  3. 自动增加长度时机为16 * 0.75=12,当长度达到12时,增加长度,默认增加为2 * length,也就是2*16=32
  4. hashMap的数据结构为数组+链表的结构
  5. 存储方式为key的hash值对(length-1)取余为数组角标,链表存储判断哈希值,哈希值相同判断是否key相同,相同覆盖,不相同,增加最新的数据,同时在Entry内记录原来的数据。
  6. hashMap的最大长度为2的30次方。
arrayList源码
  1. 默认大小为10,触发扩容时机为达到当前容量
  2. 增添和删除基本时通过System.arraycopy方法,
  3. 扩容时使用的是Arrays.copyOf方法,创建新的Object[ ] ,然后将原来集合的数据赋值过去
  4. 每次扩容为当前容量的二进制右移一位,增加0.5倍,10->15->22
  5. 最大容量为2^31-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值