HashMap原理及put与get方法调用过程
来源:互联网 发布:python决策树结构 编辑:程序博客网 时间:2024/05/17 08:52
HashMap的原理
HashMap的数据结构为数组+链表,以key,value的形式存值,通过调用put与get方法来存值与取值。
它内部维护了一个Entry数组,得到key的hashCode值将其移位按位与运算,然后再通过跟数组的长度-1作逻辑与运算得到一个index值来确定数据存储在Entry数组当中的位置,通过链表来解决hash冲突问题。当发生碰撞了,对象将会储存在链表的下一个节点中。
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值,否则返回null
put方法调用
1.调用hash函数得到key的HashCode值
2.通过HashCode值与数组长度-1逻辑与运算得到一个index值
3.遍历索引位置对应的链表,如果Entry对象的hash值与hash函数得到的hash值相等,并且该Entry对象的key值与put方法传过来的key值相等则,将该Entry对象的value值赋给一个变量,将该Entry对象的value值重新设置为put方法传过来的value值。将旧的value返回。
4.添加Entry对象到相应的索引位置
以上都为我个人理解,如有不正确希望大家指出,共同讨论。
- HashMap原理及put与get方法调用过程
- HashMap的put和get方法原理
- HashMap.put/get方法
- Java HashMap中put与get的工作原理
- HashMap原理分析put get remove
- hashMap底层put和get方法逻辑
- HashMap的put,get方法实现!
- HashMap中put与get的实现
- JDK源码之解读hashMap 的put和get方法的实现原理
- HashMap的put、get方法分析与Hash冲突的分析、解决
- Java HashMap的数据结构以及put和get方法
- HashMap中的数据结构与get,put源码解析
- HashMap put() get()
- HashMap的put()方法
- HashMap的原理分析(1)put方法的实现
- 了解HashMap的get和put内部的工作原理,需要理解透Java HashMap的原理
- HashMap学习笔记:put方法
- 手写HashMap,实现put,get以及扩容
- Unity中接入原生广告(UnityAds)和 GoogleAdmob 和 Vungle
- CMake学习(一)
- Linux下搭建gre隧道
- UDP协议的发送端的基本代码
- Django-CSRF的理解
- HashMap原理及put与get方法调用过程
- 机器人技术(7)AtdRobot六自由度机械臂控制教程
- 前端模块化开发方案小对比
- 有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别
- 除法(Division, UVa 725)
- ora-3237
- 移动web01
- 跳转语句
- 用for循环嵌套实现九九乘法表