JAVA源码阅读-HashMap(一)

       HashMap 是Java集合框架下常用的一类,其以Key-Value的形式保持数据;HashMap是Map接口的实现,通过hash算法实现key-value的存储。

一、HashMap的继承结构

继承结构

       实现接口

HashMap 实现了: Map、Cloneable、Serializable 接口;

       实现子类

JAVA源码阅读-HashMap(一)_第1张图片

       关于HashMap的直接实现子类,后续介绍,本文不做分析;

二、HashMap的数据结构

HashMap 是数组+链表+红黑树的结构(java 1.8);

         JAVA源码阅读-HashMap(一)_第2张图片

三、HashMap的基础属性参数

常量

属性 说明
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;  //缺省初始容量 
static final int MAXIMUM_CAPACITY = 1 << 30; //最大容量
 static final float DEFAULT_LOAD_FACTOR = 0.75f;    //缺省转载因子
static final int TREEIFY_THRESHOLD = 8;     //链表转换成树的阈值
 static final int UNTREEIFY_THRESHOLD = 6;   //树转换成链表的阈值
 static final int MIN_TREEIFY_CAPACITY = 64;     //转换树后表格最小容量               

成员变量

属性 说明
transient Node[] table;    HashMap 基础结构,保存键值对
transient Set> entrySet; entrySet集合
transient int size map大小
transient int modCount HashMap结构修改次数
int threshold; 下一次重新分配table数组的阈值
final float loadFactor; 哈希表的转载因子                           

下一节将对HashMap的构造方法以及基础的成员函数进行分析

你可能感兴趣的:(JAVA学习)