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

相关推荐
云和数据.ChenGuang7 分钟前
运维面试题.云计算面试题集锦
面试·运维面试题·云计算面试题·linux面试题
Sunyanhui12 小时前
力扣 最长回文字串-5
算法·leetcode·职场和发展
互联网杂货铺3 小时前
Postman定义公共函数
自动化测试·软件测试·测试工具·职场和发展·接口测试·压力测试·postman
不爱说话郭德纲4 小时前
Stylus、Less 和 Sass 的使用与区别
前端·css·面试·less·sass·stylus
ThisIsClark4 小时前
【后端面试总结】MySQL面试总结
mysql·面试·职场和发展
ThisIsClark5 小时前
【后端面试总结】MySQL索引
mysql·面试·职场和发展
qq_485668996 小时前
算法习题--蓝桥杯
算法·职场和发展·蓝桥杯
就是有点傻6 小时前
C#中面试的常见问题006
开发语言·面试·c#·wpf
奇妙之二进制17 小时前
2025年春招修订版《C/C++笔面试系列》(1) C语言经典笔面试题(上)
c语言·c++·面试
兑生18 小时前
力扣面试150 填充每个节点的下一个右侧节点指针 II BFS 逐层构建法
leetcode·面试·宽度优先