面试简要介绍hashMap

jdk8之前,hashmap采用的数据结构是数组+链表,jdk8之后采用的数据结构是数组+链表/红黑树。hashmap的数据以键值对的形式存在,如果两个元素的hash值相同,就会发生hash冲突,被放到同一个链表上--->如何解决hash冲突--->再hash法,即当发生hash冲突时,使用另一个哈希函数对键进行再次哈希,以确定下一个位置。在jdk8之后,链表超过8会转化为红黑树,如果当前数据/数据总容量 > 负载因子,hashmap就会进行扩容,初始化容量默认是16,默认加载因子是0.75,该数据是通过泊松分布数学计算得出的。

回答思路:

hashmap的数据结构-->红黑树-->扩容,负载因子

hashmap的数据形式-->键值对-->hash冲突-->解决方案

补充:hashmap为什么不安全

在 JDK1.7 中,HashMap 采用头插法,因此并发情况下会导致环形链表,产生死循环。

虽然 JDK1.8 采用了尾插法解决了这个问题,但是并发下的 put 操作也会使前一个 key 被后一个 key 覆盖。

相关推荐
007php0071 小时前
某游戏互联网大厂Java面试深度解析:Java基础与性能优化(一)
java·数据库·面试·职场和发展·性能优化·golang·php
狂炫冰美式1 小时前
QuizPort 1.0 · 让每篇好文都有测验陪跑
前端·后端·面试
沐怡旸2 小时前
【底层机制】垃圾回收(GC)底层原理深度解析
android·面试
Moonbit2 小时前
MoonBit Pearls Vol.12:初探 MoonBit 中的 Javascript 交互
javascript·后端·面试
沐怡旸2 小时前
【穿越Effective C++】条款13:以对象管理资源——RAII原则的基石
c++·面试
小欣加油3 小时前
leetcode 3318 计算子数组的x-sum I
c++·算法·leetcode·职场和发展
T___T3 小时前
彻底搞懂 CSS 盒子模型 box-sizing:小白也能看懂的布局核心
前端·面试
彭于晏爱编程3 小时前
关于表单,别做工具库舔狗
前端·javascript·面试
拉不动的猪4 小时前
什么是二义性,实际项目中又有哪些应用
前端·javascript·面试
sheepfagdng8 小时前
求职专栏-【面试-自我介绍】
面试·职场和发展