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

相关推荐
Haven-18 分钟前
Java-面试八股文-JVM篇
java·jvm·面试
大前端helloworld2 小时前
从初中级如何迈入中高级-其实技术只是“入门卷”
前端·面试
点云SLAM3 小时前
C++ 常见面试题汇总
java·开发语言·c++·算法·面试·内存管理
叙白冲冲3 小时前
哈希算法以及面试答法
算法·面试·哈希算法
a587696 小时前
Java核心概念精讲:TCP与UDP的区别、Java NIO的几个核心组件与HTTP和HTTPS的区别等(46-50)
java·面试·nio
JosieBook6 小时前
【程序人生】有梦想就能了不起,就怕你没梦想
程序人生·职场和发展
小猪乔治爱打球6 小时前
[Golang 修仙之路] 分布式专题:分布式锁
后端·面试
boonya8 小时前
Kafka核心原理与常见面试问题解析
分布式·面试·kafka
Java中文社群8 小时前
面试官:如何实现动态线程池的任务编排?
java·后端·面试