java中List集合中ArrayList详解
List是collection接口的实现类 List: 特点: 有序,可重复 它有两个常用的实现类: 一。ArrayList: 特点:以数组的形式进行存储,因此随机访问速度较快,所有它适用于查询。 缺点:不适用于插入和删除的操作 因为每次操作都需要移动数组中的元素。 根据源码我们能得出以下几点: 1.ArrayList 在初始化的时候如果我们没有指定长度的话,它会有一个默认长度10, private static final int DEFAULT_CAPACITY = 10; 2.如果我们在增加新元素的时候超过了原来的容量,那么ArrayList是怎么做的呢? 这就涉及到了ArrayList的扩容机制,既然ArrayList是以数组形式存储的,那么肯定就继承了数组的特点一旦声明不可更改,那么既然不可更改,那java是怎么解决这个问题的呢? transient Object[] elementData; 开头声明的这个就是一个临时的可变的数组 为以后数组扩容做准备 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; } 上边代码的ensureCapacityInternal(size+1)