面试简要介绍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 覆盖。

相关推荐
躬身入世,以生证道1 小时前
面试技术栈 —— 简历篇
面试·职场和发展
Asmalin2 小时前
【代码随想录day 35】 力扣 01背包问题 一维
算法·leetcode·职场和发展
程序员飞哥3 小时前
如何设计多级缓存架构并解决一致性问题?
java·后端·面试
道可到7 小时前
百度面试真题 Java 面试通关笔记 04 |JMM 与 Happens-Before并发正确性的基石(面试可复述版)
java·后端·面试
bot5556667 小时前
“企业微信iPad协议”静默 72 小时:一台被遗忘的测试机如何成为私域的逃生梯
javascript·面试
火星MARK7 小时前
k8s面试题
容器·面试·kubernetes
crystal_pin8 小时前
axios统一封装的思路
面试
聪明的笨猪猪8 小时前
Java Spring “IOC + DI”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
笔尖的记忆8 小时前
【前端架构和框架】react组件化&数据流
前端·面试
小小前端_我自坚强8 小时前
UniApp 微信小程序开发使用心得
面试·微信小程序·代码规范