1、HashMap简介
HashMap基于哈希表的Map接口实现,是以key-value存储形式存在。JDK1.8版本中其数据结构是:数组+链表+红黑树的形式。下面详解源码及解决的问题。
2、HashMap类
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
接口方法:
- put方法(新增 )
- resize方法(扩容 )
- get方法(遍历)
- remove方法(删除)
- treeifyBin方法(链表树化)
- untreeify方法(红黑树转链)
成员变量:
- table变量:HashMap的底层是Node类的实体数组,Node是一个静态内部类,一种数组和链表相结合的复合结构,用于保存key-value对;
- size变量:表示已存储的HashMap的key-value对的数量;
- loadFactor变量:装载因子,默认值为0.75f(DEFAULT_LOAD_FACTOR = 0.75f;);
- threshold变量:临界值,超过此值hashmap自动扩容,threshold=容量*加载因子;
- capacity:容量,非成员变量,默认值是16;