ArrayList和Vector之间有什么区别?
这两种数据结构ArrayList和Vector之间有什么区别,应该在哪里使用它们?
这两种数据结构ArrayList和Vector之间有什么区别,应该在哪里使用它们?
差异
如果没有使用 Vectors 的特定要求,请使用 ArrayLists。
同步
如果多个线程同时访问ArrayList,那么我们必须在外部同步代码块,该代码块在结构上修改列表或简单地修改元素。结构修改是指从列表中添加或删除元素。设置现有元素的值不是结构修改。
Collections.synchronizedList
通常在创建列表时使用,以避免对列表的任何意外非同步访问。
数据增长
在内部,ArrayList 和 Vector 都使用 Array 来保存它们的内容。将元素插入 ArrayList 或 Vector 时,如果空间不足,该对象将需要展开其内部数组。Vector 默认将其数组的大小加倍,而 ArrayList 将其数组大小增加 50%。
正如文档所说,Vector
和ArrayList
几乎是等价的。不同之处在于,对 的访问是同步的,而对 的访问不是同步的。这意味着一次只有一个线程可以调用 a 上的方法,并且在获取锁时会有轻微的开销;如果使用 ,则情况并非如此。通常,您需要使用 ;在单线程情况下,这是一个更好的选择,而在多线程情况下,您可以更好地控制锁定。想要允许并发读取?好。想要对一批十次写入执行一次同步?也很好。它确实需要你多一点小心,但这可能是你想要的。另请注意,如果您有 ArrayList,则可以使用 Collections.synchronizedList
函数创建同步列表,从而获得等效于 .Vector
ArrayList
Vector
ArrayList
ArrayList
Vector