在java中何时使用向量而不是数组更好?

时间:2011-05-07 22:06:21

标签: java

在java中何时使用向量而不是数组更好?为什么?

4 个答案:

答案 0 :(得分:7)

Vector:永远不会,除非API需要它,因为它是一个类,而不是一个接口。

List:这应该是您默认的类似数组的集合。它是一个接口,因此如果需要,任何东西都可以是List。 (并且有很多List实现,例如ArrayListLinkedListCopyOnWriteArrayListImmutableList,用于各种功能集)

Vector是线程安全的,但Collections.synchronizedList()包装器也是如此。

数组:很少,如果API需要。数组的另一个主要优点是当你需要一个固定长度的基元数组时,与List<Integer>相比,所需的内存空间相当紧凑,其中整数需要被加入Integer个对象

答案 1 :(得分:2)

Vector(或List)当您事先不知道要插入多少元素时。

当您完全知道该向量的整个生命周期中元素的最大数量时,array

由于在使用ListVector(任何集合)时没有高性能处罚,我总是会选择使用它们。他们的灵活性太重要了,不予考虑。

现在我只在必要时使用arrays。示例:使用需要它们的API时。

答案 2 :(得分:0)

首先关闭ArrayList是一个比Vector更快的实现(但不是线程安全的)。

当您事先知道长度并且不会发生太大变化(或根本不变)时,阵列很方便。

答案 3 :(得分:0)

声明方法时,请使用List

不要使用Vector,它是JDK的早期版本,并且已经过改进以与Collections一起使用。

如果存在对性能非常敏感的算法,则私有阵列成员可能会有所帮助。如果需要返回其内容或将它们传递给方法,通常最好围绕它构造一个对象,可能就像Arrays.asList(thePrivateArray)一样简单。对于线程安全列表:Collections.synchronizedList(Arrays.asList(thePrivateArray))。为了防止修改数组内容,我通常使用Collections.unmodifiableList(Arrays.asList(thePrivateArray))