Vector或ArrayList选择什么

时间:2015-04-17 05:45:09

标签: java vector arraylist

我使用 Vector 在我的程序中存储记录(即XML解析器(记录为标签))。你可以放在向量中的记录是否有任何限制因为我怀疑我的向量不保存文件中的所有标记(文件中有数百万个标记)。 那是真的吗?我也看到大多数人都建议使用 ArrayList 而不是Vector。两者都自动增长,并且应该能够存储任意数量的元素,然后是差异吗?

我应该使用什么?

提前致谢。

2 个答案:

答案 0 :(得分:2)

对于新代码,请始终使用ArrayList<T>。 Vector是同步的,与ArrayList一样,您可以选择使其同步或不同步。

向量的同步开销(您可能不需要)可能导致它比ArrayList慢。它就像StringBuffer vs StringBuilder。

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

答案 1 :(得分:1)

Vector是线程安全的,而ArrayList不是

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

Vector同步。这意味着如果一个线程正在处理Vector,则没有其他线程可以获取它。与ArrayList不同,一次只有一个线程可以对向量执行操作。

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

来源:http://beginnersbook.com/2013/12/difference-between-arraylist-and-vector-in-java/