HashMap,LinkedHashMap与TreeMap

HashMap:

基于Map接口实现,允许null值,非同步,不保证有序,也不保证不随时间变化。
在HashMap中有两个很重要的参数,容量(Capacity)和负载因子(Load factor)。
容量(Capacity)就是bucket的大小,负载因子(Load factor)就是bucket填满程度的最大比例。

HashMap中put函数的实现:
1.对key的hashCode做hash,然后再计算index。
2.如果没有碰撞直接放到bucket里。
3.如果碰撞了,以链表形式存放在bucket后。
4.如果碰撞导致链表过长,就把链表转换成红黑树。
5.如果节点已经存在就替换old value(保证key的唯一性)。
6.如果bucket满了,(超过(load factor*current capacity)就要resize。

HashMap中get函数的实现:
1.当调用get方法时会调用hash函数,这个hash函数会将key的hashCode值返回,返回的hashCode与Entry数组长度-1进行逻辑与运算得到一个index值,用这个index值来确定数据存储在Entry数组当中的位置。
2.通过循环来遍历索引位置对应的链表,初始值为数据存储在Entry数组当中的位置,循环条件为Entry对象不为null,改变循环条件为Entry对象的下一个节点。
3.如果hash函数得到的hash值与Entry对象当中key的hash值相等,并且Entry对象当中的key值与get方法传进来的key值equals相同则返回该Entry对象的value值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值