vector和arraylist的区别和联系

发布网友 发布时间:2022-03-29 13:01

我来回答

2个回答

懂视网 时间:2022-03-29 17:23

arraylist和vector的区别:二者都有一个初始容量大小,采用线性连续存储空间;当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样ArrayList就有利于节约内存空间。

  

  Vector的方法都是同步的,是线程安全的,而ArrayList的方法不是,由于线程的同步必然要影响性能,因此ArrayList的性能比Vector好。如果有多个线程会访问到集合,那最好是使用Vector,因为不需要再去考虑和编写线程安全的代码。ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要讲已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

热心网友 时间:2022-03-29 14:31

vector 安全 arraylist线程不安全
一、从存储数据的方式来看:

1、ArrayList是采用数组方式存储数据,实现了可变大小的数组。

它允许所有元素,包括null。

其特点:

(1)ArrayList没有同步。

(2)此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢。

2、Vector也是采用数组方式存储数据,由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差。

其特点:

(1)Vector是同步的。

(2)由Vector创建的Iterator,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。

二、从存取操作的效率来看

在取数据操作中Arraylist最快。

在存数据操作中 linklist最快。

在删除数据操作中linklist最快。

三、从应用的角度来看:
如果需要快速随机访问元素,应该使用ArrayList。
  如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com