泛型键值对,允许任意类型的对象作为key、value存储
public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable
HashMap1.8结构
![image](https://img-blog.csdnimg.cn/2020041921585150.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2lZaHVpdHVuZQ==,size_16,color_FFFFFF,t_70)
重要变量
//默认数组容量大小,也就是2的4次幂
static final int DEFAULT_INITIAL_CAPACITY = 16;
//最大数组容量大小,也就是2的32次幂
static final int MAXIMUM_CAPACITY = 1073741824;
//默认负载因子,默认0.75,默认16*0.75=12时自动扩容,扩容两倍大小变为32.
static final float DEFAULT_LOAD_FACTOR = 0.75F;
//链表转换为树结构的阈值,调用方法treeify()
static final int TREEIFY_THRESHOLD = 8;
//树结构转换为链表的阈值
static final int UNTREEIFY_THRESHOLD = 6;
static final int MIN_TREEIFY_CAPACITY = 64;
//节点数组,每个节点存储这hash,key,value,下一个节点Node,构成数组+链表的结构
transient HashMap.Node<K, V>[] table;
transient Set<Entry<K, V>> entrySet;
transient int size;
transient int modCount;
//阈值
int threshold;
//负载因子,扩容容量的百分比,默认0.75f
final float loadFactor;