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

网站建设 书籍乾县住房和城乡建设局网站

网站建设 书籍,乾县住房和城乡建设局网站,企业品牌网站建设首选公司,oppo应用商店下载官方appHashMap就是以Key-Value的方式进行数据存储的一种数据结构。 HashMap在jdk1.7之前和jdk1.8之后的底层数据结构是不一样的。 在jdk1.7之前是数组链表的形式,并通过entry节点保存key和value值;当Hash冲突比较严重的时候,在数组上形成的链表就会…

        HashMap就是以Key-Value的方式进行数据存储的一种数据结构。

        HashMap在jdk1.7之前和jdk1.8之后的底层数据结构是不一样的。

        在jdk1.7之前是数组+链表的形式,并通过entry节点保存key和value值;当Hash冲突比较严重的时候,在数组上形成的链表就会变的越来越长,由于链表是不支持索引查询的,所以这个时候要想在链表中找一个元素的话就需要遍历一遍链表,最坏的结果是查找的元素在链表的末尾,这样显然会导致查询效率大大降低;

        所以为避免这一问题的发生,在jdk1.8加入了红黑树,红黑树是一个自平衡的二叉查找树,使用红黑结点并使得两端保持相对平衡;所以jdk1.8后HashMap的底层数据结构是数组+链表+红黑树的形式。

        Jdk8开始当链表高度到8、数组长度超过64时,会将链表转为红黑树,元素以内部类使用Node类存储Key和Value。

        通过计算key的hash值,进行二次hash然后对数组长度进行取模,获得对应数组下标; 获得下标后,会先判断下标位置是否存在元素,如果下标位置没有元素,则直接创建Node存入数组;如果存在元素就会产生hash冲突

        冲突产生后,先对key值进行equals()比较,如果key值相同则取代该元素,不同则通过尾插法插入链表,在插入的同时遍历链表计算高度,如果中途存在key值相同的元素则进行覆盖;如果没有就直接插入到链表尾部。

        插入完成,对链表高度进行判断,如果链表高度达到8,并且数组长度到64则转变为红黑树;反之,如果红黑树结点低于等于6则会退化为链表。

        注意,如果Key为null的话,则存在下标0的位置上。

jdk7中HashMap底层数据结构图:

jdk8中HashMap底层数据结构图:


 ——》以上讲述了HashMap底层数据结构是怎样的,同时这个题也是面试的高频提问题。在回答过程中,还穿插 了为什么在jdk8要加入红黑树这一问题。以上是自己总结的面试题,根据自我理解和查找资料得出,欢迎各位CSDN的友友们前来指教!


http://www.yayakq.cn/news/288121/

相关文章:

  • 网站建设中广告法绝对化用语整理成都做网站设
  • 用c语言做网站让建站公司做网站需要什么
  • 长宁企业网站制作有域名了网站怎么做
  • 网站首页html制作代码canva ppt模板
  • 合肥企业建站系统模板海淀区seo引擎优化
  • 重庆建设银行网站企业邮箱排名
  • 营销网站制作费用亚马逊欧洲站vat怎么申请
  • 2019做网站需要营业执照吗火的网站建设明细报价表
  • 长沙网络公司最新消息网络优化seo
  • 1万网站建设费入什么科目网站优化难吗
  • 黑龙江省建设局网站wordpress eocms
  • 如何建立一个网站的数据库文件网站上的动态效果怎么做的
  • seo网站优化怎么做百度小程序免费制作
  • 自建网站如何盈利北京朝阳区房租
  • 网站带数据库下载美食网站设计的基本思路
  • 网站制作软件手机版下载影楼网站模板
  • 烟台网站制作厂家电话营销型网站优点
  • 国家拨款农村建设查询的网站wordpress主题演示插件
  • 小说网站建设详细流程网站建设 西安
  • 企业网站颜色咸阳做网站xymokj
  • 大名专业做网站网络服务协议模板
  • 视频模板网站推荐学校网站建设总结报告
  • 呢图网站场建设封面温州市城建设计院网站
  • wordpress整站密码访问东莞材料网站建设
  • 网站推广好难wordpress国内优化
  • 企业建网站一般要多少钱怎么不花钱做网站
  • 专业网站设计公司推荐网站优化关键词排名
  • 网站建设需招聘什么专业人郑州seo网络营销技术
  • 灵台网站建设笛东景观设计公司官网
  • 上海网站建设有限公司app研发录