一、类属性
//默认容量16
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
//最大容量2的30次方
static final int MAXIMUM_CAPACITY = 1 << 30;
//默认加载因子0.75
static final float DEFAULT_LOAD_FACTOR = 0.75f;
//单个节点上的链表长度大于8时转换为红黑树
static final int TREEIFY_THRESHOLD = 8;
//单个节点上的红黑树大小小于6时退化为链表
static final int UNTREEIFY_THRESHOLD = 6;
//当最小容量大于64时单个节点上的链表才有可能转换为红黑树
static final int MIN_TREEIFY_CAPACITY = 64;
二、对象属性
//Node数组
transient Node<K, V>[] table;
//Entry集合
transient Set<Map.Entry<K, V>> entrySet;
//当前Map的长度
transient int size;
/**
* 已对HashMap进行结构修改的次数。
* 结构修改是指更改HashMap中的节点或以其他方式修改其内部结构(例如,节点的增加和修改)的修改。
* 此字段用于使HashMap的Collection-view上的迭代器快速失败。
* (请参见ConcurrentModificationException)
*/
transient int modCount;
/**
* 下一个要调整大小的大小值(capacity*loadFactor),扩容位置。
*/
int threshold;
/**
* 加载因子
*/
final float loadFactor;
三、构造方法中会用到的方法
/**
* @return 大于当前传入数字的最小2次幂的值,如果结果大于最大允许容量,则返回最大运行容量值
*/
static int tableSizeFor(int cap) {
int n = cap - 1;
n |= n >>> 1;
n |= n >>> 2;
n |=</