联系
ArrayList、Vector、LinkedList都是List接口的常见子类
底层实现
ArrayList
是基于数组实现的Vector
也是基于数组实现的Vector
是基于双向链表实现
区别
ArrayList
与Vector
ArrayList | Vector | |
---|---|---|
产生版本 | JDK1.2 | JDK1.0 |
初始化策略 | 内部数组声明时时空的,第一次add() 时初始化为一个长度为10的数组 | 内部数组在声明时同时初始化的长度为10 |
扩容策略 | 扩容为原来的1.5倍 | 扩容为原来的2倍 |
线程安全性 | 不安全,因为没有加任何锁 | 安全,采用了synchronized 同步方法,锁住了整个Vector 对象 |
优缺点 | 性能较高 | 因为锁,使得性能互斥(读读互斥) |
使用场景 | 在频繁查找以及尾部的插入与删除场景下使用 |
LinkedList
LinkedList | |
---|---|
产生版本 | JDK1.2 |
线程安全性 | 采用异步处理,不安全 |
使用场景 | 频繁在任意位置进行元素插入与删除使用 |