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

相关推荐
子林super10 小时前
MySQL三大日志(binlog、redo log和undo log)详解
面试
救救孩子把16 小时前
AI面试八股文-03_3-RAG 系统面试题
人工智能·redis·面试·agent·rag
我命由我1234517 小时前
动火作业极简理解
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·学习方法
十年Java程序媛17 小时前
Java 内部类全解|成员 / 静态 / 匿名内部类,理清和 Lambda 的区别
java·spring boot·面试
用户6760811491118 小时前
个人图书室
面试
柒和远方18 小时前
企业级多模态知识库:从文件入库、跨模态检索到可追溯回答
面试
健康活着就好18 小时前
# 手写Promise.all和Promise.race,面试再也不怕了
面试·json
八月的雨季 最後的冰吻19 小时前
C++ 面试要点笔记(续)
c++·笔记·面试
用户849137175471620 小时前
【技术面试高频】MySQL 存储 IP 地址:你还在用 VARCHAR?
mysql·面试