HashMap的底层粗介

 HashMap实现了Map接口
 Java 8:底层结构:数组+链表+红黑树
 里面维护了Node类型的的数组,默认值为null,当第一次调用put方法时,table初始化长度为16,加载因子为0.75(即在大于长度的0.75时需要扩容),此时临界值为12。
 调用put方法,里面主要是在调用里面的putValue方法,里面判断要添加的元素的哈希值,经过运算,可得出该元素在放在table表里的位置,如果该位置上没值,便直接添加进去,如果有值,则需要判断是否重复,重复则不能添加,如果不重复则继续添加进去。当里面是链表结构,则追加到链表的末端,如果是树结构,则经比较后,添加到对应位置。如果当前的size>临界值,则需要按2倍长度扩容。
 注意:1.每次扩容都需要重新计算哈希值,让每一个元素得到一个新的位置。2.链表个数>8 && 容量>64 时,则更改为树结构。
 Java 7:
 与Java 8的区别:
 1.底层结构:数组+链表
 2.底层维护了entry类型的数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值