首页 > 其他 > 详细

HashMap基础知识

时间:2021-04-08 01:36:50      阅读:21      评论:0      收藏:0      [点我收藏+]

1.HashMap的特性

  HasMap 存储键值对实现快速存取,允许为null,key值不能重复,key重复则覆盖

  非同步线程不安全

       底层是hash表,不保证有序

2.HashMap实现原理

  JDK1.8底层采用数组+链表+红黑树的数据结构,我们通过put和get存储和获取对象,当我们给put方法传递键和值时,会对键先做一个hashCode计算来的到它在buckset数组中的位置来存储Entry对象,当获取对象时,通过get获取buckset的位置,在通过键对象的equals方法找到正确的键值对,然后返回值对象。

3.HashMap put实现过程

  计算key的hashcode的值然后拿值的高16位做异或运算,如果散列表是空时,调用resize初始化散列表

  如果没有发生碰撞,直接添加元素到散列表中,如果发生了碰撞(hashcode相同) 如果key的地址相同或者equals的内容相同,则替换旧值

  如果是红黑树结构,就直接调树的插入方法

  如果是链表结构,循环遍历直到链表中某个节点为空,使用尾插法插入,插入后判断链表个数是否达到变成红黑树的阀值8

    如果桶满了大于阈值 负载因子0.75  则resize 进行扩容

  

  

HashMap基础知识

原文:https://www.cnblogs.com/qi2332356/p/14630189.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!