array list 创建的时候采用了延迟初始化,
zai new arraylist 时候创建了一个 empty 的数组
当用的时候才会真正的初始化它。
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
}
}
而 ArrayList(int initialCapacity) 方法是初始化一个 initialCapacity 容量的list 。
但是 HashMap 在 java8 的时候 还是初始化了默认空间 16 个size 。
网友评论