1.4 ArrayList 源码解析
ArrayList 实现了 List 接口,继承了抽象类 AbstractList。size 表示含有的元素。capacity 表示上限。
private void rangeCheck(int index) {
if (index >= size)
throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}
public E get(int index) {
rangeCheck(index);
return elementData(index);
}
public E set(int index, E element) {
rangeCheck(index);
E oldValue = elementData(index);
elementData[index] = element;
return oldValue;
}
使用 get 和 set 方法会比用下标返回多一个范围检查。
创建 ArrayList 对象时,如果使用无参构造器,则初始 elementData 容量为 0,第一次添加,则扩容 elementData 为 10。如需要再次扩容,则扩容 elementData 为 1.5 倍。
集合只能存储引用类型。
