关于 ArrayList 那些事
new ArrayList<>(0) 是什么操作
首先我们要知道 ArrayList 中的两个成员变量:
- Object[] elementData;
- Object[] EMPTY_ELEMENTDATA = {};
- Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA
这两个成员变量乍一看名字都是默认成员变量数组,好像都一样,但是为什么要定义两个空的成员变量数组呢?
源码:
/**
* Constructs an empty list with the specified initial capacity.
*
* @param initialCapacity the initial capacity of the list
* @throws IllegalArgumentException if the specified initial capacity
* is negative
*/
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
// 传入 0 后的逻辑
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}