首页 > 代码库 > HashMap实现原理

HashMap实现原理

 

static final int DEFAULT_INITIAL_CAPACITY = 16;// 默认初始容量为16,必须为2的幂  

static final int MAXIMUM_CAPACITY = 1 << 30;// 最大容量为2的30次方  

static final float DEFAULT_LOAD_FACTOR = 0.75f;// 默认加载因子0.75  

transient Entry<K,V>[] table;// Entry数组,哈希表,长度必须为2的幂  

 

transient int size;// 已存元素的个数  

int threshold;// 下次扩容的临界值,size>=threshold就会扩容  

finalfloat loadFactor;// 加载因子  

static final int TREEIFY_THRESHOLD = 8;//由链表转换成树的阈值

static final int UNTREEIFY_THRESHOLD = 6;//由树转换成链表的阈值

static final int MIN_TREEIFY_CAPACITY = 64;//被树化时最小的hash表容量,至少是TREEIFY_THRESHOLD的4倍

构造方法:

HashMap()
          构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap

HashMap(int initialCapacity)
          构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap

 

构造方法摘要
HashMap()
          构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap
HashMap(int initialCapacity)
          构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap
HashMap(int initialCapacity, float loadFactor)
          构造一个带指定初始容量和加载因子的空 HashMap
HashMap(Map<? extendsK,? extendsV> m)
          构造一个映射关系与指定 Map 相同的 HashMap

HashMap实现原理