1.创建HashMap对象
public HashMap() {
//new一个hashmap,加载因子为默认的0.75f
this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted
}
2.HashMap的put方法
//put方法
public V put(K key, V value) {
return putVal(hash(key), key, value, false, true);
}
//hash方法
static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
//putval方法
final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
boolean evict) {
Node<K,V>[] tab; //tab表示数组
Node<K,V> p; //p表示一个node对象,存放key的hash值,key,以及value
int n, i; // n表示数组初始化后的长度 i表示一个数组下标
// 如果数组为空,则扩容
if ((tab = table) == null || (n = tab.length) == 0)
n = (tab = resize()).length;
// 通过(n-1)&hash的