vector和arraylist的区别和联系
2个回答
展开全部
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。
如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
一、从存储数据的方式来看:
1、ArrayList是采用数组方式存储数据,实现了可变大小的数组。
它允许所有元素,包括null。
其特点:
(1)ArrayList没有同步。
(2)此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢。
2、Vector也是采用数组方式存储数据,由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差。
其特点:
(1)Vector是同步的。
(2)由Vector创建的Iterator,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态(例如,添加或删除了一些元素),这时调用Iterator的方法时将抛出ConcurrentModificationException,因此必须捕获该异常。
二、从存取操作的效率来看
在取数据操作中Arraylist最快。
在存数据操作中 linklist最快。
在删除数据操作中linklist最快。
三、从应用的角度来看:
如果需要快速随机访问元素,应该使用ArrayList。
如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询