在java中,什么时候使用向量比使用数组更好,反之亦然?
在java中,什么时候使用向量比使用数组更好,反之亦然?为什么呢?A在java中,什么时候使用向量比使用数组更好,反之亦然?,java,Java,在java中,什么时候使用向量比使用数组更好,反之亦然?为什么呢?AVector(或List)当您事先不知道要插入多少元素时 一个数组,当你完全知道向量的整个生命周期中元素的最大数量时 由于在使用列表或向量(任何相关集合)时没有高性能惩罚,因此我总是选择使用它们。他们的灵活性非常重要,不容忽视 现在我只在绝对需要的时候才使用数组。示例:当使用需要它们的API时。首先使用ArrayList比Vector实现更快(但不是线程安全的) 当您事先知道长度时,数组非常方便,并且不会有太大的变化(或者根本不
Vector
(或List
)当您事先不知道要插入多少元素时
一个数组
,当你完全知道向量的整个生命周期中元素的最大数量时
由于在使用列表
或向量
(任何相关集合)时没有高性能惩罚,因此我总是选择使用它们。他们的灵活性非常重要,不容忽视
现在我只在绝对需要的时候才使用
数组
。示例:当使用需要它们的API时。首先使用ArrayList比Vector实现更快(但不是线程安全的)
当您事先知道长度时,数组非常方便,并且不会有太大的变化(或者根本不会变化)。向量:除非API需要,否则永远不要使用数组,因为它是一个类,而不是一个接口
列表
:这应该是默认的类似数组的集合。它是一个界面,所以任何东西都可以是列表
,如果需要的话。(对于各种功能集,有许多List
实现,例如ArrayList
,LinkedList
,CopyOnWriteArrayList
,ImmutableList
)
Vector
是线程安全的,但是Collections.synchronizedList()
包装也是线程安全的
数组:很少,如果API需要的话。数组的另一个主要优点是,当您需要一个固定长度的原语数组时,所需的内存空间相当紧凑,而
列表
需要将整数装箱到整数
对象中。声明方法时,请使用列表
不要使用Vector
,它是JDK的早期部分,经过改装后可用于集合
如果有一种对性能非常敏感的算法,则私有数组成员可能会有所帮助。如果需要返回其内容或将其传递给方法,通常最好在其周围构造一个对象,可能像array.asList(theprivaterary)
一样简单。对于线程安全列表:Collections.synchronizedList(Arrays.asList(thePrivateArray))
。为了防止修改数组内容,我通常使用Collections.unmodifiableList(Arrays.asList(privatearray))
可能的重复项