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

HashMap实现原理(高频)

HashMap的数据结构:底层使用hash表数据结构,即数组和链表或红黑树

1、当我们往HashMap中put元素时,利用key的hashCode重新hash计算出当前对象的元素在数组中的下标。
2、存储时,如果出现hash值相同的key,此时有两种情况:
a. 如果key相同,则覆盖原始值;
b. 如果key不同(出现冲突),则将当前的key-value放入链表或红黑树中。
3、获取时,直接找到hash值对应的下标,在进一步判断key是否相同,从而找到对应值。

转换成红黑树的优点:(1)提升性能 :链表的时间复杂度为O(n),红黑树时间复杂度为O(logn)   

                                    (2)避免DDOS攻击

追问:HashMap的jdk1.7和jdk1.8有什么区别?

        1、JDK1.8之前采用的拉链法,数组+链表

        2、JDK1.8之后采用数组+链表+红黑树,链表长度大于8且数组长度大于64则会从链表转化为红黑树

http://www.dtcms.com/a/477354.html

相关文章:

  • 道格拉斯-普克算法(Douglas-Peucker Algorithm)的详细原理介绍
  • Linux (CentOS 7.9) vmware 创建与安装
  • Linux下的阻塞与非阻塞模式详解
  • 计算机网络基础篇——物理层
  • 【开题答辩全过程】以 标本销售管理系统为例,包含答辩的问题和答案
  • 中国 TOB 信息安全市场增长洞察报告(2020-2024):细分领域表现与战略机遇
  • SSM(Spring+SpringMVC+Mybatis)整合
  • 网站排名推广汕头发展
  • 【Linux】初始线程
  • WSL SSH 服务器一站式配置教程
  • 网站建设企业资质等级做游戏模板下载网站有哪些
  • C++ bit级别的复制
  • 《算法闯关指南:优选算法--二分查找》--17.二分查找(附二分查找算法简介),18. 在排序数组中查找元素的第一个和最后一个位置
  • 浏览器原理之详解渲染进程!
  • JSON衍生:JSON5、JSONL、JSONC、NDJSON、BSON、JSONB、JSONP、HOCON
  • 【Java Xml】dom4j写入XML
  • F024 vue+flask电影知识图谱推荐系统vue+neo4j +python实现
  • C++设计模式_结构型模式_外观模式Facade
  • 第 7 篇:交互的乐趣 - 响应用户输入
  • 解决Chrome 140以上版本“此扩展程序不再受支持,因此已停用”问题 axure插件安装问题
  • 如何在火语言中指定启动 Chrome 特定用户配置文件
  • 轻松测试二维码生成与识别:使用Python的qrcode、opencv和pyzbar库
  • 清河做网站报价大背景 网站
  • 迅捷视频转换器 v18.4.23 图文安装教程|支持MP4、AVI、MKV等多格式视频转换
  • 【AI论文】通过渐进式一致性蒸馏实现高效的多模态大语言模型
  • 怎么查看网站开发人网站建设流程及相应技术
  • kubecm切换k8s集群工具
  • Azure多项目管理全攻略:从资源部署到成本分析与优化
  • 怎么做游戏试玩网站城乡建设部网站 挂证
  • 历劫波,明真我——Debug Commune