zoukankan      html  css  js  c++  java
  • 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 进行扩容

      

      

  • 相关阅读:
    RedMine 1.3.3 安装攻略
    .net 4.0 framework 安装时发生严重错误
    MYSQL安装配置
    接口隔离ISP
    依赖倒置DIP
    VS2010添加WP模板
    VS2012尝鲜
    OCP开放闭合
    单一职责
    里氏替换
  • 原文地址:https://www.cnblogs.com/qi2332356/p/14630189.html
Copyright © 2011-2022 走看看