关于Java中HashMap中的put和get方法的底层逻辑原理(简单理解)

    首先 哈希表的存储原理是数组+单链表 或 数组+红黑树的存储结构  
put:将 put(K,V)中的K值通过hashCode转化为一个哈希值, 用哈希值取模数组的长度 得到一个索引值,并且如果 说 不同的K值转化的哈希值通过取模得到的索引值相同,则称之为哈希冲突现象 面对这种现象通常由三种情况:
1.这个时候如果该索引值的数组上已有别的数据,则调用equals方法 一个一个对比K键值 若期间发现了有和K键值一样的键值 则将新K键值对应的Value覆盖老K的value 
2若发现没有别的数组,则创建一个Node对象放入
3.若发现该索引值已有别的Node对象并且K键值都和put上的K不同 则新建一个Node对象插入到单链表的的末尾
get:通过传入K键值 同时把K键值转化为hash值 ,同样通过取模数组长度得到索引值,然后到数组对应索引值的位置 遍历查找相对应的K键值 从而得到对应的V值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值