Vector和ArrayList区别
Vector和ArrayList Vector和ArrayList在使用上非常相似,都可用来表示一组数量可变的对象应用的集合,并且可以随机地访问其中的元素。
Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
ArrayList有一个容量(capacity),它表示在不需要为更大的数组分配内存的情况下所能容纳的元素。当添加元素时,它们被存放在数组中,但当空间用尽时,就必须重新分配一个数组以替代原数组,所以正确地设置初始容量而已提高性能。如果数据的初始大小远小于其最终大小,那么将初始容量设得更大一些可以减少使用更大数组替换原数组的次数。但是将大小设得太大,也会浪费空间。
简单地来说:
ArrayList: 底层数据结构是数组,线程不安全。
增删慢,查询快。
Vector:底层数据结构是数组,线程安全。
增删慢,查询快。但是,线程安全,效率就低。所以查询也慢。
|