共同点:
1.list接口下的常用子类
2.ArrayList、Vector基于数组实现
3.LinkedList基于链表实现
不同点:
1.ArrayList采用懒加载(用的时候再初始化)策略,在第一次添加元素时初始化内部数组(大小为10)
ArrayList扩容为原来数组的1.5倍
int newCapacity = oldCapacity + (oldCapacity >> 1);
ArrayList采用异步处理,线程不安全,性能较高
在尾部插入/删除元素很快,时间复杂度为1
2. Vector在产生对象时,初始化大小为10内部数组
public Vector() { this(10); }
Vector扩容为原来数组的2倍
int newCapacity = oldCapacity + ((capacityIncrement > 0) ? capacityIncrement : oldCapacity);
Vector采用synchronized修饰常用的增删改查方法,线程安全,性能较低(读读互斥)
stack是vector的子类
3. 在任意位置的插入与删除使用LinkedList
LinkedList是Queue接口的子类,实现了Queue接口