HashMap实现原理
HashMap的数组结构
底层使用hash表数据结构,即数组和链表或红黑树
当前对象的元素在数组中的下标
2,储存时,如果出现hash值相同的key,会有两种情况
a.如果key相同,则覆盖原始值 比入第一次存储的key是name第二次还是name,那么第二个会去覆盖第一次的value值
b.如果key不同(出现冲突的话),则将当前的key-value放入到链表或者红黑树中(链表的长度大于8,且数组长度大于64转换为红黑树)
3,获取数据时,直接找到hash值对应的下标,再进一步判断key是否相等,从而找到对应值。
如果是链表需要遍历链表,如果是红黑树需要去红黑树查找对应的值
jdk1.7和1.8有什么区别
jdk1.8之前采用的是拉链法。(也就是创建一个链表数组,数组中的每一格就是一个链表,如有hash冲突,则将冲突的值加到链表中)jdk1.8在解决hash冲突是有变化,当链表长度大于8时并且长度达到64时将链表转化为红黑树用来减少搜索时间,扩容时,红黑树拆分成树的结点数小于等于临界值6个,则退化成6链表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!