Java中Vector和ArrayList的区别

 我来答
匿名用户
2017-01-10
展开全部
远标老师教过List是接口 ,定义了一些方法 但是方法没有被实现 ,ArrayList是一个类 ,实现了List这个接口. List里边定义的方法 ,在ArrayList里边都实现了, 同时List也可以被别的类所实现, 例如Vector, Vector和ArrayList对List定义的方法的实现就有所区别。
1.List是接口,List特性就是有序,会确保以一定的顺序保存元素.
  ArrayList是它的实现类,是一个用数组实现的List.
  Map是接口,Map特性就是根据一个对象查找对象.
  HashMap是它的实现类,HashMap用hash表实现的Map,就是利用对象的hashcode(hashcode()是Object的方法)进行快速散列查找.(关于散列查找,可以参看<<数据结构>>)
  2.一般情况下,如果没有必要,推荐代码只同List,Map接口打交道.
  比如:List list = new ArrayList();
  这样做的原因是list就相当于是一个泛型的实现,如果想改变list的类型,只需要:
  List list = new LinkedList();//LinkedList也是List的实现类,也是ArrayList的兄弟类
  这样,就不需要修改其它代码,这就是接口编程的优雅之处.
  另外的例子就是,在类的方法中,如下声明:
  private void doMyAction(List list){}
  这样这个方法能处理所有实现了List接口的类,一定程度上实现了泛型函数.
  3.如果开发的时候觉得ArrayList,HashMap的性能不能满足你的需要,可以通过实现List,Map(或者Collection)来定制你的自定义类。
风知我意梦西洲DI
2017-01-10 · 超过202用户采纳过TA的回答
知道小有建树答主
回答量:363
采纳率:0%
帮助的人:158万
展开全部
1. 线程安全
Vector是同步的, 而ArrayList不是.
因为Vector是同步的, 所以它是线程安全的.
同样, 因为Vecotr是同步的, 所以他需要额外的开销来维持同步锁, 所以它要比ArrayList要慢.(理论上来说)

当然, 如果你对ArrayList有偏好, 你也可以用Collection.synchronizedList(List)来得到一个线程安全的List.

2. 容量增长
Vector允许用户设置capacityIncrement这样在每次需要扩充数组的size的时候, Vector会尝试按照预先设置的capacityIncrement作为增量来设置, 而ArrayList则会把数组的大小扩大一倍.

比如现在同样一个长度为10的Vector和ArrayList, 我们把Vector的capacityIncrement设为1
那么我们在插入第11个对象的时候, Vector会将长度变成11, 然后分配空间, 然后将对象添加进去, 而ArrayList则会分配20个对象的空间, 然后将对象添加进去.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式