List接口
ArrayList
- 常规数组实现
- 判断复制扩容,容量变为原来1.5倍
int newCapacity = oldCapacity + (oldCapacity >> 1);
线程不安全
public boolean add(E e) {
/**
* 添加一个元素时,做了如下两步操作
* 1.判断列表的capacity容量是否足够,是否需要扩容
* 2.真正将元素放在列表的元素数组里面
*/
ensureCapacityInternal(size + 1); //Increments modCount!!
elementData[size++] = e;
// elementData[size] = e;
// size = size + 1;
return true;
}
- 数组越界
- 赋值覆盖
LinkedList
- 双向链表,get()查找的时候从最近的查找
- add(E e)//查到last后
- add(int inedx, E e)//