ArrayList vs Vector - 除线程安全性和性能之外的其他优势?

时间:2011-12-12 22:13:59

标签: java vector arraylist

  

可能重复:
  What are the differences between ArrayList and Vector?

如果我想在数据集合中存储一些对象而我必须在ArrayList或Vector之间进行选择,那么主要区别是什么?我认为vector是线程安全的,因此会有性能损失。是否有其他理由更喜欢数据容器?

3 个答案:

答案 0 :(得分:3)

Vector是引入Collections框架之前的一个非常古老的类,因此它的API受到许多遗留方法的污染,这些方法复制了CollectionList接口中的方法。

我通常会避免使用它,除非你必须这样做,因为你正在使用的另一个API要求它。

答案 1 :(得分:3)

简而言之,Vector和ArrayList之间的主要区别在于Vector是同步的,而ArrayList则不是。因此,如果多个线程同时访问ArrayList,那么我们必须在外部同步代码块,从而在结构上修改列表或简单地修改元素。结构修改意味着从列表中添加或删除元素。设置现有元素的值不是结构修改。 这两个网址对您有所帮助。 http://javarevisited.blogspot.com/2011/09/difference-vector-vs-arraylist-in-java.htmlhttp://geekexplains.blogspot.com/2008/05/difference-between-vector-and-arraylist.html

答案 2 :(得分:2)

你自己说过了。 Vector中的所有方法都是痛苦地同步的。如果需要,可以在类外部应用集合上的同步,最好是根据具体情况进行。

ArrayList和Vector之间的另一个细微差别是,您可以控制Vector的增长方式。而在Arraylist中,内部数组的大小总是加倍