ArrayList和Vector的区别

 Vector是JDK旧版本中提供的一个类。Sun本来是想废弃这个类。提倡大家使用新的,就像ArrayList等。可      是,Vector提供了内部同步的功能。所以,如果需要同步数据,又不想自己多写代码,很多人还是在使用Vector。  
  所以,性能上要比ArrayList差。  
  最大区别:Vector提供同步机制。ArrayList没有。

  线程同步,就是线程安全机制,在同一时刻,只允许有一个线程去操作!

  Vector线性安全,ArrayList线性不安全。  
  Vector有同步机制,ArrayList没有同步机制。

  Vector在增加一个元素的时候用定长的方法增加。  
  而ArrayList则是以你增加元素的大小来增加。

  虽然在java2中,Vector已经过调整,符合Collection和List规格,但总体上还是建议采用新的容器,性能上也自然是ArrayList更优。



Vector:  
  当更多的元素被加入进来以至超出其容量时,Vector的size会动态增长。  
  同时,Vector在删除一些元素后,其所有下标大于被删除元素的元素都依次前移,并获得新下标比原来的小了。  
  Vector内部实际是以Array实现的,也通过元素的整数索引来访问元素,但它只能存放java.lang.Object对象,不能用于存放基本类型 数据,比如要存放一个整数10,得用new   Integer(10)构造出一个Integer包装类对象再放进去。当Vector中的元素个数发生变化时,   其内部的Array必须重新分配并进行拷贝,因此这是一点值得考虑的效率问题。  
  Vetor同时也实现了List接口,所以也可以算作Colletion了,只是它还特殊在:Vector   is   synchronized。即Vetor对象自身实现了同步机制。  
  ArrayList:实现了List接口,功能与Vetor一样,只是没有同步机制,当然元素的访问方式为从List中继承而来,可存放任何类型的对象。



Vector所有methods都被宣告為final,无法继承与覆写.   Vector   中的許多重要methods,例如addElement()和elementAt(),都是synchronized。這造成很大的效能负担.   Java   2   的container   library   以ArrayList   淘汰了Vector.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值