Java 向量或数组列表选择什么

Java 向量或数组列表选择什么,java,vector,arraylist,Java,Vector,Arraylist,我使用Vector在我的程序中存储记录(这是一个XML解析器(记录是标记))。由于我怀疑我的vector没有保存文件中的所有标记(文件中有数百万个标记),所以可以在vector中放置的记录数量是否有任何限制。 那么这是真的吗?我还看到大多数人建议使用ArrayList而不是Vector。两者都是自动增长的,应该能够存储任意数量的元素,那么有什么区别呢 我应该使用什么? 提前感谢。Vector是线程安全的,而as ArrayList不是。 ArrayList是非同步的,这意味着多个线程可以同时在A

我使用Vector在我的程序中存储记录(这是一个XML解析器(记录是标记))。由于我怀疑我的vector没有保存文件中的所有标记(文件中有数百万个标记),所以可以在vector中放置的记录数量是否有任何限制。 那么这是真的吗?我还看到大多数人建议使用ArrayList而不是Vector。两者都是自动增长的,应该能够存储任意数量的元素,那么有什么区别呢

我应该使用什么?

提前感谢。

Vector是线程安全的,而as ArrayList不是。 ArrayList是非同步的,这意味着多个线程可以同时在ArrayList上工作。例如,如果一个线程正在ArrayList上执行添加操作,则在多线程环境中,可能会有另一个线程同时在ArrayList上执行删除操作

而向量是同步的。这意味着,如果一个线程正在处理向量,其他线程就无法获得它。与ArrayList不同,一次只能有一个线程对向量执行操作

性能:ArrayList提供了更好的性能,因为它是非同步的。向量操作的性能很差,因为它们是线程安全的,在向量上工作的线程得到了一个锁,这使得其他线程等待锁被释放


来源:

对于新代码,请始终使用
ArrayList
。向量是同步的,与ArrayList一样,您可以选择是否使其同步

vector的同步开销(您可能不希望)会导致它比ArrayList慢。就像StringBuffer和StringBuilder


如果需要同步,可以从外部同步ArrayList。

如果需要同步
列表
,则说明您做错了。请注意,即使你用
集合#synchronizedList
装饰你的
列表
,你也可以得到一个
ConcurrentModificationException
。我不知道谁投了反对票。谁投了反对票请注意评论。