为了账号安全,请及时绑定邮箱和手机立即绑定

ArrayList和Vector有什么区别?

ArrayList和Vector有什么区别?

POPMUISE 2019-11-04 15:24:30
两种数据结构ArrayList和Vector之间有什么区别,应在哪里使用它们?
查看完整描述

3 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

如文档所述,a Vector和an ArrayList几乎相等。不同之处在于对a的访问Vector是同步的,而对a的访问ArrayList则不同步。这意味着一次只能有一个线程可以在一个线程上调用方法Vector,并且获取锁的开销很小。如果使用ArrayList,则不是这种情况。通常,您将需要使用ArrayList;; 在单线程情况下,这是一个更好的选择;在多线程情况下,您可以更好地控制锁定。要允许并发读取吗?精细。是否想对十次写入执行一次同步?还可以 它确实需要在您的末端多一点照顾,但可能正是您想要的。另请注意,如果您有ArrayList,则可以使用Collections.synchronizedList函数来创建同步列表,从而使您等效于Vector。


查看完整回答
反对 回复 2019-11-04
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

Vector和ArrayList之间有2个主要区别。


向量默认情况下是同步的,而ArrayList不同步。注意:通过将arraylist对象传递给Collections.synchronizedList()方法,可以使ArrayList也同步。同步方式:可以与多个线程一起使用,而没有任何副作用。


当空间不足以容纳新元素时,ArrayLists将以先前大小的50%增长,而当没有空间容纳新传入元素时,Vector将以先前大小的100%增长。


除此之外,就编程工作而言,它们之间还存在一些实际差异:


为了从Vector获得特定位置的元素,我们使用elementAt(int index)函数。此函数名称很长。代替ArrayList,我们有了get(int index),它很容易记住和使用。

类似地,要使用Vector中的新元素替换现有元素,我们使用setElementAt()方法,该方法又很长,可能会刺激程序员重复使用。代替此ArrayList具有添加(INT指数,对象)方法,该方法很容易使用和记忆。像这样,它们在ArrayList中对程序员更友好且易于使用。

什么时候使用哪个?


尝试避免完全使用Vector。ArrayList可以完成Vector可以完成的所有工作。更多信息ArrayList默认情况下不同步。如果需要,可以使用Collections util类在需要时进行同步。

ArrayList具有易于记忆和使用的函数名称。

注意:即使arraylist增长了100%,您也可以通过surecapacity()方法来避免这种情况,以确保您在初始阶段本身就分配了足够的内存。


希望能帮助到你。


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 592 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信