【问题标题】:is there anybody out there still using Vector(instead of Collections.synchronizedList(List list)/CopyOnWriteArrayList)? [closed]有没有人还在使用 Vector(而不是 Collections.synchronizedList(List list)/CopyOnWriteArrayList)? [关闭]
【发布时间】:2011-01-03 10:31:52
【问题描述】:

我想知道为什么 this 问题在 2011 年仍然存在,J2SE 1.2 于 98 年 12 月发布,带有 Collections 框架。是否有人仍在使用 Vector(除非您正在为返回 Vector 的接口编写客户端)?

【问题讨论】:

  • 您仍然会在 SO 上看到使用 Vector 的问题。这让我哭了。
  • 关于向量、哈希表和枚举的问题令人遗憾地仍然出现,尽管这三个都已被半弃用多年。不过,这不是一个真正的问题
  • 旧的 JDK 类永远不会消亡,它们只会慢慢消失。
  • 不要忘记 Java ME 和其他大型旧项目。

标签: java collections vector synchronization arraylist


【解决方案1】:

Java 5.0 在 2004 年引入了并发集合,许多人似乎并没有使用这些来代替 Collections.synchronizedList()。它们不是直接的替代品,有时使用 JDK 1.2 或 5.0 集合更好,但令我惊讶的是人们经常没有很好地使用它们。

【讨论】:

  • 感谢您提及并发集合类。
【解决方案2】:

我已经很多年没用过 Vector 或 Hashtable 了。

【讨论】:

    【解决方案3】:

    VectorHashtable 等遗留集合类仍然存在,因为 Sun(以及现在的 Oracle)始终认为保持 Java 向后兼容非常重要。他们从不从标准 Java API 中删除旧内容,因为那样会破坏旧程序。

    真正的问题应该是:为什么 Sun(或 Oracle)不弃用旧的集合类?

    没有明确的技术原因说明旧类未被弃用。这可能是因为 API 的其他部分仍在使用这些遗留类,而 Sun / Oracle 不想在编译期间因弃用警告而过多地打扰用户。

    无论如何,除非您确实需要(例如因为您正在处理旧 API),否则切勿使用这些遗留类。

    【讨论】:

      【解决方案4】:

      我经常将 Vector 与 Swing 一起使用。我有很多使用像 Def​​aultTableModel 这样的类的应用程序,如果您在 Vector 中有数据,这些类非常易于使用。有一些方法可以解决这个问题,但我喜欢保持简单,因为它不会影响性能。

      但是,任何其他时候我需要一个列表,我都不使用 Vector。

      【讨论】:

        猜你喜欢
        • 2015-09-29
        • 2020-05-16
        • 2011-05-19
        • 1970-01-01
        • 2014-09-12
        • 1970-01-01
        • 1970-01-01
        • 2013-03-03
        • 2016-02-06
        相关资源
        最近更新 更多