HashMap的底层原理

  HashMap在我们的日常开发以及面试中经常出现,它在实际应用中真的很频繁,一个老练的程序员对Hashmap的结构都是非常的熟悉。今天就来讲一下HashMap的底层原理。

  HashMap底层就是通过数组+链表实现的,先通过对key进行hashing算法,得到Entry[]中该key被分配到的位置,然后用equals方法进行比较,如果key的equals方法判断相等,则覆盖,如果不等则在链表中添加。hashmap中根据hashcode来定位是利用了数组查找快的特性,数组根据下标索引的时间复杂度为O(1)。

  哈希冲突:又叫哈希碰撞,指的是当key的hashCode值一样时,处于数组中的相同位置,这个时候就变成了在链表中添加元素,由于链表中查找的时间复杂度是O(n),所以要尽量避免hash冲突,默认有一个阈值是0.75,称为负载因子,当数组的利用率超过了负载因子时,就会进行扩容为两倍,主要是为了避免hash冲突,提高查询效率。

  hashMap中还有许多的问题,例如多线程扩容的问题,后面会继续探讨这些问题。

  

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值