HashMap 是Java集合框架下常用的一类,其以Key-Value的形式保持数据;HashMap是Map接口的实现,通过hash算法实现key-value的存储。
一、HashMap的继承结构
继承结构
实现接口
HashMap 实现了: Map<K,V>、Cloneable、Serializable 接口;
实现子类
关于HashMap的直接实现子类,后续介绍,本文不做分析;
二、HashMap的数据结构
HashMap 是数组+链表+红黑树的结构(java 1.8);
三、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<K,V>[] table; | HashMap 基础结构,保存键值对 |
transient Set<Map.Entry<K,V>> entrySet; | entrySet集合 |
transient int size | map大小 |
transient int modCount | HashMap结构修改次数 |
int threshold; | 下一次重新分配table数组的阈值 |
final float loadFactor; | 哈希表的转载因子 |
下一节将对HashMap的构造方法以及基础的成员函数进行分析