当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/470509.html

相关文章:

  • HTTPS如何实现加密以及SSL/TSL加密的详细过程
  • Golang | Leetcode Golang题解之第516题最长回文子序列
  • (done) 什么 RPC 协议? remote procedure call 远程调用协议
  • PCL 基于Ransac提取误匹配点对
  • 光速写作 2.0.5 | 专注AI写作,海量素材库
  • 【已解决,含泪总结】非root权限在服务器上配置python和torch环境,代码最终成功训练(一)
  • 公安基础知识-通哥
  • Python画图|极坐标下的散点图动态输出
  • 揭开MySQL并发中的“死锁”之谜:从原理到解决方案的深度解析
  • 【论文阅读】Reliable, Adaptable, and Attributable Language Models with Retrieval
  • A-Frame负责人Diego Marcos分享WebXR与开源AI的未来
  • 【STM32-HAL库】火焰传感器(STM32F407ZGT6)(附带工程下载链接)
  • git merge没有生成合并提交
  • 算法题总结(十九)——图论
  • android studio编译错误提示无法下载仓库
  • 基于SpringBoot的时装购物系统【源码】+【论文】
  • 自动化结账测试:使用 Playwright确保电商支付流程的无缝体验【nodejs]
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-25
  • 【读书笔记-《网络是怎样连接的》- 5】Chapter2_4-网卡的工作过程
  • qt QOperatingSystemVersion详解
  • openpnp - 解决“底部相机高级校正成功后, 开机归零时,吸嘴自动校验失败的问题“
  • Python字幕滚动:为视频添加专业级动态效果!
  • Linux 系统中,将网络配置从 DHCP 改为静态 IP的几种方法
  • 【jellyfin】解决Edge 浏览器播放 jellyfin 的 hevc/h265 视频“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”错误
  • 企业管理系统设计思路——毕业论文设计
  • Android 默认去掉URL网络校验,设置不进行网络校验
  • Python | Leetcode Python题解之第515题在每个树行中找最大值
  • Java泛型:类型安全的艺术
  • Redis 淘汰策略 问题
  • 技术成神之路:设计模式(二十二)命令模式