HashMap无参构造函数如下:
/**
* Constructs an empty <tt>HashMap</tt> with the default initial capacity
* (16) and the default load factor (0.75).
*/
public HashMap() {
this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted
}
它是如何像它Javadoc中说的一样构造了一个初始容量为16的容器的?Node数组都不用初始化的么?至少加上一句
table = new Node<>[DEFAULT_INITIAL_CAPACITY];
才合乎常理吧!请各位赐教!
1 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
注释说了在第一次使用的时候才会初始化
/**
* The table, initialized on first use, and resized as
* necessary. When allocated, length is always a power of two.
* (We also tolerate length zero in some operations to allow
* bootstrapping mechanics that are currently not needed.)
*/
transient Node<K,V>[] table;
初始化代码在 final Node<K,V>[] resize() 方法里面,
Node<K,V>[] newTab = (Node<K,V>[])new Node[newCap];
table指向这个newTab
添加回答
举报
0/150
提交
取消