Vector应该被弃用吗?

时间:2010-12-24 10:19:35

标签: java vector synchronization

当我们不需要同步时,ArrayList比Vector更快。当我们确实需要同步集合时,我们最好使用同步包装器(如果我错了就纠正我),或者仅在对该集合进行调用时同步代码。是否存在使用Vector是最佳选择的情况?

4 个答案:

答案 0 :(得分:17)

虽然在新代码中使用Vector并不是一个好主意,但没有必要弃用。虽然新的集合类是优越的,但使用Vector类实际上并没有破坏任何东西。

此外,有a number of other standard Java APIs依赖于Vector API,毫无疑问,成千上万的客户和第三方应用程序也使用它。

基本上,弃用Vector会造成不必要的破坏性。 不需要可以推动人们更改可靠的代码,如果速度稍慢的话。


有人建议/暗示他们可以弃用Vector而不(实际上)删除它。但问题是,弃用警告会为真实的人创造真正的工作。如果不必要地执行此操作,则忙碌的人将默认开始抑制警告。 (回想起那个叫狼的男孩的故事......)

答案 1 :(得分:2)

据我所知,使用Vector仅用于拥有依赖于它的核心API或1.2之前的运行时环境。这也可能是一种安慰。有些人喜欢向量,因为这是他们最初使用的。

更新:现在已按照here

所述弃用了Vector

答案 2 :(得分:1)

因为有很多程序使用Vector。从jre中删除Vector意味着它们都会被破坏。另一方面,根据您的需要使用ArrayList或其他捆绑的List实现之一。

答案 3 :(得分:0)

在java中检查Lock Elision,现代JVM实现(Mustang)足够智能,可以优化共享&非共享对象访问。 Synchronization optimizations in Mustang

所以,它并不重要(带有synchronized关键字的vector / arraylist);但是对于编译会导致过多的警告:(