java当中arraylist和vector的区别你都了解吗?在这两者之间究竟有什么不同呢?下面就让我们一起来做一下详细的了解吧。
一、区别
首先,arraylist和vector这两类都实现List接口。
List接口一共有3个实现类,一个是ArrayList、一个是Vector、一个是LinkedList。
List用来存放多个元素,可以维护元素的次序,并且,还允许元素的重复。
下面就重点的来个大家介绍一下arraylist和vector这两个具体实现类的相关区别。
1、ArrayList:
ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。
数组的缺点是每个元素之间不可以存在间隔,在数组大小不满足的时候,需要增加存储能力,要将已经有数组的数据复制到新的存储空间当中。
当从ArrayList的中间位置插入或者是删除元素的时候,需要对数组进行复制、移动、代价比较高。
所以说,它适合随机查找和遍历,不适合插入和删除。
2、Vector
Vector和ArrayList相同,都是通过数组实现的,但是,区别就在于Vector支持线程的同步。
也就是一时刻只有一个线程可以写Vector,避免多线程同时写而引起的不一致性,可是,实现同步需要很高的花费,所以,访问它比访问ArrayList慢。
除此之外,arraylist和vector的扩展数组的大小也不同。
arraylist:public boolean add(E e)
{
ensureCapacity(size + 1); // 增加元素,判断是否能够容纳。不能的话就要新建数组
elementData[size++] = e;
return true;
}
public void ensureCapacity(int minCapacity)
{
modCount++;
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity)
{
Object oldData[] = elementData; // 此行没看出来用处,不知道开发者出于什么考虑
int newCapacity = (oldCapacity * 3) / 2 + 1; // 增加新的数组的大小
if (newCapacity
newCapacity = minCapacity;
// minCapacity is usually close to size, so this is a win:
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
vector:private void ensureCapacityHelper(int minCapacity)
{
int oldCapacity = elementData.length;
if (minCapacity > oldCapacity)
{
Object[] oldData = elementData;
int newCapacity = (capacityIncrement > 0) ?
(oldCapacity + capacityIncrement) : (oldCapacity * 2);
if (newCapacity
{
newCapacity = minCapacity;
}
elementData = Arrays.copyOf(elementData, newCapacity);
}
}
对于arraylist和vector的区别你都清楚了吗?更多java常见问题,欢迎继续通过奇Q工具网来了解。
推荐阅读: