Vector和ArrayList的区别

1 篇文章 0 订阅
1 篇文章 0 订阅

Vector和ArrayList两个集合类的本质没有太大的不同,都是实现了List接口,而且底层都是基于Java数据来存储集合元素的。

1、不同的在于序列化方面:ArrayList比Vector安全,

在ArrayList集合中:

//采用elementData数组来存储集合元素

private transient Object[] elementData;

在Vector集中中:

//采用elementData数组来保存集合元素

private Object[] elementData;

从源码可以看出,ArrayList提供的writeObject和readObject方法来实现定制序列化,而Vector只是提供了writeObject方法,并没有完全实现定制序列化。

2、不同点在于Vector是线性安全的,ArrayList是非线性安全的,从源码可以清晰的看出这点

ArrayList和Vector的绝大部分方法都是一样的,甚至连方法名都一样,只是Vector的方法大都添加关键之synchronized修饰。

在add方法中,Vector电泳的是insertElementAt(element,index);

public synchronized void isnertElementAt(E obj,int index);

将 ArrayList中的add(int index,E element)方法和Vector的isnertElementAt(E Obj,int index)方法进行对比,可以发现vectorde insertElementAt(E obj,int index)方法只是多了synchronized修饰。

3、扩容上区别

ArrayList集合和Vector集合底层都是数组实现的,在数组容量不足的时候采取的扩容机制不同。

ArrayList集合容量不足,采取在原有容量基础上扩充为原来的1.5倍。


而Vector则多了一个选择:当capacityIncrement实例变量大于0时,扩充为原有容量加上capacityIncrement的容量值。否则采取在原有容量基础上扩充为原来的1.5倍。

原创博文:转载请说明出处。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值