hashMap原理

hashMap中put的实现原理

1、什么是hashMap?
既然说到hashMap那首先就应该要知道Map是个什么东西,map就是用于存储键值对(<key,value>)的集合,它是一个接口,hashMap就是基于hash算法实现map接口的一个集合类。

2、put实现原理
调用Put方法的时候发生了什么呢?
比如调用 map.put(“key1”, “value1”) ,插入一个Key为“key1"的元素。这时候我们需要利用一个哈希函数来确定这个键值对的插入下标(index),如计算出来这个下标为3,那么结果如下图:
在这里插入图片描述也就是插入的数据是没有规律的,下面是我做的一个测试:
在这里插入图片描述
但是当插入的键值对较多时,肯定避免不了下标重复,也就是所谓的hash冲突,这个时候怎么解决呢?
在这里插入图片描述从上图可以看到hashmap中有个next属性,当下标重复这个时候采用了链表式,当然我们还可以修改hashMap中的负载因子来降低hash冲突,当然说到使用链表肯定存在查询速度的影响,相对而言,使用链表式查询是比较慢的,当这样的链超过8后会转成红黑树结构。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值