ArrayList 和 Vector 的区别
- ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。
- Vector与ArrayList一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问ArrayList慢
两者的对比:
ArrayList | Vector |
---|---|
1、实现原理:采用动态对象数组实现,默认构造方法创建了一个空数组 | 1:实现原理:采用动态数组对象实现,默认构造方法创建了一个大小为10的对象数组 |
2、第一次添加元素,扩展容量为10,之后的扩充算法:原来数组大小+原来数组的一半 | 2、扩充的算法:当增量为0时,扩充为原来大小的2倍,当增量大于0时,扩充为原来大小+增量 |
3、不适合进行删除或插入操作 | 3、不适合删除或插入操作 |
4、为了防止数组动态扩充次数过多,建议创建ArrayList时,给定初始容量。 | 4、为了防止数组动态扩充次数过多,建议创建Vector时 |