猿问

ArrayList和Vector有什么区别?

两种数据结构ArrayListVector之间有什么区别,应在哪里使用它们?



POPMUISE
浏览 593回答 3
3回答

芜湖不芜

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

慕盖茨4494581

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()方法来避免这种情况,以确保您在初始阶段本身就分配了足够的内存。希望能帮助到你。
随时随地看视频慕课网APP

相关分类

Java
我要回答