繁体   English   中英

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

[英]When is it better to use a vector than an array and vice versa in java?

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

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

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

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

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

如果您事先不知道将要插入多少元素,则为Vector (或List )。

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

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

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

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

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

声明方法时,请使用List

不要使用Vector ,它是JDK的早期部分,并且经过改进以与Collections

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM