hashMap底层原理面试简洁版 hashMap底层原理面试简洁版 2023-03-30 215 hashMap的底层是由数组,链表,红黑树组成 JKD1.8 1.当我们添加一个数据的时候,首先hashMap会初始化16个长度的数组 2.比如添加一个字符串a会调拿当前的k计算出他的哈希值,然后拿这个哈希值进行16取模就是得到余数就是他数组存储的索引位置,比如算出索引位置为1 3.判断当前1的位置上是否有数据如果没有直接存储,如果有数据这也是我们常说的哈希冲突,不一样的值计算出一样的索引位置,你不能直接赋值到该索引位置上因为会把前面的值给覆盖掉遇到这个问题就需要使用链表来进行存储,当他有数据的时候调用equals和当前k进行对比,返回true就直接覆盖这个k的value值,返回false创建一个entry对象,entry对象有3个主要的属性k,value,和next next就是用来指向下一个节点的地址的 这里的链表采用的是头插法所以第二个数据会插在第一个数据的前面 4.当前的索引链表长度大于8的时候数并且数组长度大于64的时候就会把链表转成红黑树的结构进行存储以便提高查询的速度 免费搭建微信查券返利机器人来轻松赚佣金 文章来自:IT技术分享网 分享地址:http://www.5ityx.cn/cate100/237027.html 上一篇: .gitignore 文件不生效问题 & 解决方法 下一篇: .gitignore与.git/info/exclude区别 hashMap底层原理面试简洁版 相关内容 .h5文件模型如何使用,并且给出代码 .java编译成.class 与 .class反编译成.java .lnk文件 和一种较新的.lnk病毒及解决方法 .py文件转为.exe文件的方法 /etc/profile文件使用source不能全局生效的解决方法 /proc下的kcore文件过大,能变小吗? /usr/bin/ld: cannot find -l 基本原理解释与解决方法 10G_Ethernet_02 10G Ethernet Subsystem 简介 10个好玩到爆的网站,打开就能玩,个个超有趣 10个开源/免费的电子商务平台 10个方法提高你的编程生产力 10个顶级的海外工作外包平台 10分钟学会python对接【OpenAI API篇】 10套高质量Linux教程,放在百度网盘了 10种寻址方式之间的区别 10行代码完成cesium跟随弹窗~超简单~