zoukankan      html  css  js  c++  java
  • JDK1.7 HashMap源码分析

    本文是作者原创,版权归作者所有.若要转载,请注明出处.

    话不多说,开始吧! 

    我们知道,JDK1.7中  HashMap 采用的数据结构 = 数组 + 单链表

    链表Entry

    HashMap的常用属性

    HashMap的构造方法

    put方法(主)

     1.初始化

     1-1 将传入的容量转化为>传入容量大小的最小的2的次幂(详见位运算那篇文章)

    2.key=null的处理(addEntry方法后面再说)

    3.根据key计算hash值

    4.根据hash值 获得 key在应存放的数组Table中位置

    5.遍历该数组元素为头结点的链表,逐个判断该key对应的值是否已存在

    6.添加一个元素

    6-1.先判断容量是否足够,若容量不足,则进行扩容(2倍)

    6-1-1.将旧数组上的键值对转移到新table中,从而完成扩容

    6-2.添加一个新的元素到数组

     

    get方法

    1.key为null

    2.key为其他元素

     

    remove方法

    细节如下:

     

    至此,JDK1.7 HashMap源码分析,感谢观看

    
    
  • 相关阅读:
    linux学习笔记---grep
    node.js读取到的文件列表
    node 按行读取文件
    NodeJS遍历文件生产文件列表
    常用linux命令行
    2017/11/13
    Linux下输出 excel文件
    位映射对大数据的排重
    算法中的渐进记号
    KMP算法原理
  • 原文地址:https://www.cnblogs.com/lusaisai/p/13599400.html
Copyright © 2011-2022 走看看