【问题标题】:ArrayList vs Vector - other advantages than thread-safety and performance? [duplicate]ArrayList vs Vector - 除了线程安全和性能之外的其他优势? [复制]
【发布时间】:2012-01-18 21:07:08
【问题描述】:

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

如果我想在数据集合中存储一些对象,并且必须在 ArrayList 或 Vector 之间进行选择,主要区别是什么?我认为向量是线程安全的,因此会降低性能。是否有任何其他理由偏爱数据容器?

【问题讨论】:

  • 你看过here吗?
  • 关于Vector的同步限制:stackoverflow.com/a/1386288/870122
  • 顺便说一句,我唯一一次使用Vector 是在想要使用接受Vector 的J2SE 构造函数或方法时(Swing API 被它们污染了)。

标签: java vector arraylist


【解决方案1】:

Vector 是在 Collections 框架引入之前的一个非常古老的类,因此它的 API 被许多与 CollectionList 接口中的方法重复的遗留方法所污染。

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

【讨论】:

    【解决方案2】:

    简而言之,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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2017-10-31
        • 1970-01-01
        • 2013-01-17
        • 2021-04-21
        • 1970-01-01
        • 1970-01-01
        • 2019-01-30
        • 2014-11-30
        • 1970-01-01
        相关资源
        最近更新 更多