ArrayList
底层 Object 数组
空参构造默认数组为空数组
在添加元素时,确认扩容后数组长度的最小容量值。如果数组是空数组,当最小容量值小于默认容量10时,取默认容量作为最小容量值
扩容时计算旧容量加上旧容量一半的大小,是否大于最小容量值。
如果小于,取最小容量值作为新数组长度
增删改查就是对数组的操作,所以增删慢,查询快
LinkedList
双向链表结构
private static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
...
}
public class LinkedList<E> {
// 实际元素个数
transient int size = 0;
// 头结点
transient Node<E> first;
// 尾结点
transient Node<E> last;
}