• HashMap基础知识


    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 进行扩容

      

      

  • 相关阅读:
    Linux命令——find
    Linux命令——locate
    python模块:datetime
    python模块:json
    python模块:shelve
    python模块:shutil
    python模块:sys
    python:OS模块
    str.index()与str.find()比较
    python模块:re
  • 原文地址:https://www.cnblogs.com/qi2332356/p/14630189.html
Copyright © 2020-2023  润新知