ArrayList和Vector的联系和区别

it2023-10-27  69

ArrayList和Vector的联系和区别

联系

ArrayList和Vector两者内部都是通过数组实现的,允许快速随机访问。

数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从数组的中间位置插入或者删除元素时,需要对数组进行复制、移动代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

精简一下:

二者都采用线性连续存储空间,都有一个初始容量大小。

区别

当Vector或ArrayList中的元素超过它的初始大小时, Vector会将它的容量翻倍,而ArrayList只增加50%,对于某个固定的容量,Vector扩容的次数较ArrayList少,但ArrayList可能更加节约内存空间。

Vector中是线程安全的(使用synchronized修饰方法),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此 ArrayList的性能比Vector好。

如果有多个线程会访问到集合,那最好是使用 Vector,因为不需要再去考虑和编写程安全的代码。

精简一下:

1. ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。

2. Vector是线程安全的,ArrayList不是线程安全的。

(完)

趣事

同事结婚了,送的喜糖用空心铁球装着,很好看,据说成本才2元一个。

最新回复(0)