HashMap心得

HashMap的心得

HashMap是通过Entry[]数组和链表来实现的。在进行put(K key,V value)操作时,会通过Key的hashCode计算得出这个Entry的索引值,如果Entry的索引值重复,那么就会使用到链表,把后存进的元素放在这个数组中,并把next属性指向在它之前存进来的具有相同hashCode值的那个元素。

为什么后进来的元素需要放在链表的最前面,而不是最后面,这就取决于效率问题,在集合中,我们除了做存(put)的操作之外,还需要做取(get())的操作;get(Object key)方法在实现的时候,因为HashMap底层综合运用了数组和链表,如果hashCode值重复,那么就需要去这个索引下的链表中去寻找值,这样就会出现两次查询,那么为了提高效率,把后进来的值放在链表的最前面,这样可以减少一次查询,提高效率。

除此之外,HashMap的数组其实也是一个链表,所以HashMap实际上是一个”链表散列”的数据结构,综合使用了数组和链表这两种数据结构。

附:网上找的HashMap图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值